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'."); } }
/// <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)); }