DC jest domena. Jeśli chcesz połączyć się z domeną example.com niż twoimi DC to: DC = przykład, DC = com
Nie potrzebujesz żadnej nazwy hosta ani adresu IP kontrolera domeny (może być ich dużo) .
Po prostu obrazujesz, że łączysz się z samą domeną. Aby połączyć się z domeną example.com, możesz po prostu napisać:
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");
I gotowe.
Można również określić użytkownika i hasło używane do łączenia:
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com", "username", "password");
Również należy zawsze pisać LDAP wielkimi literami. Miałem pewne kłopoty i dziwne wyjątki, dopóki nie przeczytałem gdzieś, że powinienem spróbować napisać to na dużą literę i to rozwiązało moje problemy.
Właściwość directoryEntry.Path
umożliwia głębsze zanurzenie się w domenie. Jeśli chcesz wyszukać użytkownika w określonej jednostce organizacyjnej (OU), możesz go tam ustawić.
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");
directoryEntry.Path = "LDAP://OU=Specific Users,OU=All Users,OU=Users,DC=example,DC=com";
To byłoby zgodne z następującą hierarchię AD:
Wystarczy napisać hierarchię z najgłębszym do najwyższej.
Now you can do plenty of things
Na przykład szukać użytkownika wg nazwy konta i uzyskać jego nazwisko:
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");
DirectorySearcher searcher = new DirectorySearcher(directoryEntry) {
PageSize = int.MaxValue,
Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=AnAccountName))"
};
searcher.PropertiesToLoad.Add("sn");
var result = searcher.FindOne();
if (result == null) {
return; // Or whatever you need to do in this case
}
string surname;
if (result.Properties.Contains("sn")) {
surname = result.Properties["sn"][0].ToString();
}
ou = jednostka organizacyjna, dc = komponent domeny – paul