Si vous êtes nouveau à Active Directory, je suggère que vous devez comprendre comment Active Directory stocke les données en premier.
Active Directory est en fait un serveur LDAP. Les objets stockés dans le serveur LDAP sont stockées hierachically. C'est très semblable à vous stockez vos fichiers dans votre système de fichiers. C'est pourquoi il a obtenu le nom de Directory server et Active Directory
Les conteneurs et objets Active Directory peut être spécifié par un distinguished name
. Le nom unique est comme cela qu' CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com
. Comme une tradition relationnel de la base de données, vous pouvez exécuter la requête à l'encontre d'un serveur LDAP. Il est appelé à la requête LDAP.
Il y a un certain nombre de façons d'exécuter une requête LDAP dans .NET. Vous pouvez utiliser DirectorySearcher de System,DirectoryServices
ou SearchRequest de System.DirectoryServices.Protocol
.
Pour votre question, puisque vous demander de trouver d'utilisateur principal objet plus précisément, je pense que la façon la plus intuitive consiste à utiliser PrincipalSearcher de System.DirectoryServices.AccountManagement
. Vous pouvez facilement trouver beaucoup de différents exemples de google. Voici un exemple qui est en train de faire exactement ce que vous demandez.
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();
Notez que sur l'ANNONCE de l'utilisateur de l'objet, il y a un certain nombre d'attributs. En particulier, givenName
vous donnera l' First Name
et sn
vous donnera l' Last Name
. Sur le nom de l'utilisateur. Je pense que vous avez voulu dire le nom de connexion utilisateur. Notez qu'il existe deux noms d'ouverture de session sur l'ANNONCE de l'utilisateur de l'objet. L'un est - samAccountName
, qui est également connu comme le pré-Windows 2000, nom de connexion utilisateur. userPrincipalName
est généralement utilisé après l'installation de Windows 2000.