Se você é novo no Active Directory, sugiro que entenda como o Active Directory armazena dados primeiro.
O Active Directory é na verdade um servidor LDAP. Os objetos armazenados no servidor LDAP são armazenados hierarquicamente. É muito semelhante a você armazenar seus arquivos em seu sistema de arquivos. É por isso que recebeu o nome Directory server e Active Directory
Os recipientes e objetos no Active Directory podem ser especificados por a distinguished name. O nome distinto é assim CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com. Como um banco de dados relacional tradicional, você pode executar uma consulta em um servidor LDAP. É chamado de consulta LDAP.
Existem várias maneiras de executar uma consulta LDAP no .NET. Você pode usar DirectorySearcher de System.DirectoryServicesou SearchRequest de System.DirectoryServices.Protocol.
Para sua pergunta, já que você está pedindo para localizar o objeto principal do usuário especificamente, acho que a maneira mais intuitiva é usar PrincipalSearcher de System.DirectoryServices.AccountManagement. Você pode encontrar facilmente muitos exemplos diferentes no google. Aqui está um exemplo que está fazendo exatamente o que você está pedindo.
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();
Observe que, no objeto de usuário AD, há vários atributos. Em particular, givenNamedará a você o First Namee sno Last Name. Sobre o nome de usuário. Acho que você quis dizer o nome de logon do usuário. Observe que há dois nomes de logon no objeto de usuário AD. Um deles é samAccountName, também conhecido como nome de logon do usuário anterior ao Windows 2000. userPrincipalNameé geralmente usado após o Windows 2000.