Jeśli dopiero zaczynasz korzystać z Active Directory, proponuję najpierw zrozumieć, w jaki sposób Active Directory przechowuje dane.
Active Directory jest w rzeczywistości serwerem LDAP. Obiekty przechowywane na serwerze LDAP są przechowywane hierarchicznie. Jest to bardzo podobne do przechowywania plików w systemie plików. Dlatego otrzymał nazwę Serwer katalogów i Active Directory
Kontenery i obiekty w usłudze Active Directory można określić za pomocą pliku distinguished name
. Nazwa wyróżniająca jest taka CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com
. Podobnie jak tradycyjna relacyjna baza danych, możesz uruchamiać zapytania na serwerze LDAP. Nazywa się to zapytaniem LDAP.
Istnieje wiele sposobów uruchamiania kwerendy LDAP w środowisku .NET. Możesz użyć DirectorySearcher z System.DirectoryServices
lub SearchRequest z System.DirectoryServices.Protocol
.
Jeśli chodzi o twoje pytanie, ponieważ chcesz znaleźć konkretny obiekt użytkownika głównego, myślę, że najbardziej intuicyjnym sposobem jest użycie PrincipalSearcher from System.DirectoryServices.AccountManagement
. Możesz łatwo znaleźć wiele różnych przykładów z google. Oto próbka, która robi dokładnie to, o co prosisz.
using (var context = new PrincipalContext(ContextType.Domain, "yourdomain.com"))
{
using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
{
foreach (var result in searcher.FindAll())
{
DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry;
Console.WriteLine("First Name: " + de.Properties["givenName"].Value);
Console.WriteLine("Last Name : " + de.Properties["sn"].Value);
Console.WriteLine("SAM account name : " + de.Properties["samAccountName"].Value);
Console.WriteLine("User principal name: " + de.Properties["userPrincipalName"].Value);
Console.WriteLine();
}
}
}
Console.ReadLine();
Należy zauważyć, że obiekt użytkownika usługi AD ma wiele atrybutów. W szczególności givenName
da ci First Name
i sn
da ci Last Name
. O nazwie użytkownika. Myślę, że miałeś na myśli nazwę logowania użytkownika. Zauważ, że istnieją dwie nazwy logowania do obiektu użytkownika usługi AD. Jednym z samAccountName
nich jest nazwa logowania użytkownika w wersji starszej niż Windows 2000. userPrincipalName
jest zwykle używany po Windows 2000.