2009-12-29 22 views
5

¿Cómo puedo obtener membresías de un grupo de usuarios de AD, preferiblemente utilizando el mismo patrón que utilizo para obtener la propiedad de Departamento del usuario, como se detalla a continuación? He encontrado varios ejemplos, pero el conjunto intersección de todas las técnicas ejemplo es bastante pequeño, y carece de la opresión y la simplicidad de esta consulta Departamento:Obtener membresías de un grupo de usuarios de Active Directory

 var adServer = ConfigurationManager.AppSettings["adServer"] ?? "localhost"; 
     var remoteRoot = new DirectoryEntry(GetRootPath(adServer)); 
     var searcher = new DirectorySearcher(remoteRoot, string.Format("(SAMAccountName={0})", shortUserName)); 

     searcher.PropertiesToLoad.Add("Department"); 
     SearchResult result = null; 
     result = searcher.FindOne(); 

Respuesta

6

¿Está usted en .NET 3.5? Si es así, es muy fácil:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"); 

string userName = "yourUser"; 

UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userName); 

PrincipalSearchResult<Principal> results = user.GetAuthorizationGroups(); 

Encuentre su usuario, y luego llamar a la .GetAuthorizationGroups() en su principal de usuario - que devuelve todos los grupos pertenece el usuario, incluyendo su grupo primario, y cualquier pertenencia a grupos anidados.

Echa un vistazo a este MSDN article para obtener más bondad nueva en .NET 3.5 cuando se trata de tratar con AD.

En .NET 2.0, las cosas son mucho más desordenadas ...

+0

Gracias. Eso está medio funcionando, pero aparece un error "No se puede acceder a la información de dominio" (algo así) cuando llamo a GetAuthorizationGroups() – ProfK

+0

¿especificó su nombre de dominio NetBIOS al construir el contexto principal? P.ej. "YOURDOMAIN", en lugar de "yourcompany.com"? –

+0

funciona para mí. Me ahorró mucho trabajo! Gracias – paul

Cuestiones relacionadas