Außerdem, wenn Sie die AD für eine Gruppe Mitglieder abzufragen, können Sie direkt alle der Mitglieder distinguishedName der vergleichen, ohne Parsing Code durch die DirectoryEntry
Klasse des System.DirectoryServices
Namensraums.
Ansonsten weiß ich einfach nicht von einer solchen Klasse irgendwo. =)
Hoffe das hilft das irgendwie irgendwie!
EDIT # 1
Hier ist ein Link, von dem ich viel gelernt habe, mit dem AD arbeiten und dem System.DirectoryServices
Namespace: Howto: (Almost) Everything In Active Directory via C#
Ich werde Sie mit einem Beispielcode in ein paar Tagen zur Verfügung stellen, wenn Sie es immer noch benötigen, wo ich die Objektklasse System.DirectoryServices.DirectorySearcher
verwenden werde, um die Mitglieder einer Gruppe abzurufen.
Ich hoffe, dass dieser Link Ihnen helfen wird, wie es für mich getan hat! =)
EDIT # 2
Hier ist das Codebeispiel ich dir erzählt habe. Dies sollte es effizienter machen, gegen die AD zu recherchieren, ohne die AD bakken zu müssen.
public IList<string> GetMembers(string groupName) {
if (string.IsNullOrEmpty(groupName))
throw new ArgumentNullException("groupName");
IList<string> members = new List<string>();
DirectoryEntry root = new DirectoryEntry(@"LDAP://my.domain.com");
DirectorySearcher searcher = new DirectorySearcher();
searcher.SearchRoot = root;
searcher.SearchScope = SearchScope.Subtree;
searcher.PropertiesToLoad.Add("member");
searcher.Filter = string.Format("(&(objectClass=group)(sAMAccountName={0}))", groupName);
SearchResult result = searcher.FindOne();
DirectoryEntry groupFound = result.GetDirectoryEntry();
for (int index = 0; index < ((object[])groupFound.Properties["member"].Value).Length; ++index)
members.Add((string)((object[])groupFound.Properties["member"].Value)[index]);
return members;
}
Haftungsausschluss: Dieser Code versehen ist, wie sie ist. Ich habe es auf meinem lokalen Rechner getestet und es funktioniert einwandfrei. Aber da ich es hier nochmal tippen musste, weil ich es nicht einfach kopieren und einfügen konnte, habe ich vielleicht beim Tippen einige Fehler gemacht, die ich nicht wollte.
Klingt wie Sie einen regulären Ausdruck benötigen - RegEx sollte die Arbeit machen ... –
Siehe http://stackoverflow.com/questions/356480/c-extracting-a-name-from-a-string – nos
Ich möchte RegEx nicht verwenden, weil ich die Testkosten nicht übernehmen möchte. Danke für die Anregung. –