Пример #1
0
        void m_initialize(String findType, String findValue)
        {
            switch (findType.ToLower())
            {
            case "name":
                String         cn    = "CN=" + escapeChars(findValue) + ", CN=Certificate Templates, CN=Public Key Services, CN=Services," + ActiveDirectory.ConfigContext;
                DirectoryEntry entry = new DirectoryEntry("LDAP://" + cn);
                m_fillproperties(entry);
                break;

            case "displayname":
                cn = "CN=Certificate Templates, CN=Public Key Services, CN=Services," + ActiveDirectory.ConfigContext;
                DirectoryEntries entries = ActiveDirectory.GetChildItems(cn);
                foreach (DirectoryEntry item in entries.Cast <DirectoryEntry>().Where(item => String.Equals(((String)item.Properties["displayName"].Value), findValue, StringComparison.CurrentCultureIgnoreCase)))
                {
                    m_fillproperties(item);
                }
                break;

            case "oid":
                cn      = "CN=Certificate Templates, CN=Public Key Services, CN=Services," + ActiveDirectory.ConfigContext;
                entries = ActiveDirectory.GetChildItems(cn);
                foreach (DirectoryEntry item in entries.Cast <DirectoryEntry>().Where(item => (String)item.Properties["msPKI-Cert-Template-OID"].Value == findValue))
                {
                    m_fillproperties(item);
                }
                break;

            default: throw new Exception("The value for 'findType' must be either 'Name', 'DisplayName' or 'OID'.");
            }
        }
Пример #2
0
 /// <summary>
 /// 查找Iis目录实体
 /// </summary>
 /// <param name="pros"></param>
 /// <param name="ep"></param>
 /// <returns></returns>
 public static DirectoryEntry FindDirectoryEntry(this DirectoryEntries pros, Func <DirectoryEntry, bool> ep)
 {
     return(pros.Cast <DirectoryEntry>().FirstOrDefault(ep));
 }