Si estás en .NET 3.5 y arriba, usted debe comprobar el espacio de nombres System.DirectoryServices.AccountManagement
(S.DS.AM). Leer todos los detalles aquí:
Básicamente, se puede definir un contexto de dominio y encontrar fácilmente los usuarios y/o grupos en el año:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
// do something here....
}
// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere");
// if found....
if (group != null)
{
// iterate over members
foreach (Principal p in group.GetMembers())
{
Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName);
// do whatever you need to do to those members
}
}
El El nuevo S.DS.AM hace que sea muy fácil jugar con usuarios y grupos en AD:
Las cuentas de equipo se mostrarán como ComputerPrincipal
(derivado de Principal
), por lo que puede mantener fácilmente separados los usuarios y las cuentas de la computadora.
Si no puede o no desea cambiarse a S.DS.AM, también puede mantener separados a los usuarios y las computadoras mediante el uso del objectCategory
en lugar del objectClass en su filtro LDAP. objectCategory
es beneficioso de todos modos, ya que está indexado, y no tiene múltiples valores, por lo que el rendimiento de las consultas será mucho mejor.
Para un usuario de la vida real, use objectCategory = Person
, mientras que para una computadora, use objectCategory = Computer
en su filtro LDAP.