2010-06-07 5 views
0

J'ai le code suivant. Je reçois une entrée de répertoire pour un utilisateur (strpath). Et puis j'obtiens les groupes où l'utilisateur est listé.Rechercher la taille du groupe dans le répertoire actif

Comment puis-je connaître le nombre d'utilisateurs dans chaque groupe?

DirectoryEntry myDE = new System.DirectoryServices.DirectoryEntry(strpath); 
object obGroups = myDE.Invoke("Groups"); 
foreach (object ob in (IEnumerable)obGroups) 
{ 
    DirectoryEntry obGpEntry = new DirectoryEntry(ob); 
    GroupsListBox.Items.Add(obGpEntry.Name); 
} 

Répondre

1

Si vous êtes sur .NET 3.5 (ou peut passer à elle), il y a un espace de noms System.DirectoryServices.AccountManagement massivement étendu qui rend ces emplois de gestion utilisateurs, les groupes et leurs membres beaucoup plus facile.

Consultez l'article MSDN Managing Directory Security Principals in the .NET Framework 3.5 pour une introduction à S.DS.AM.

Vous pouvez obtenir un principal utilisateur comme ceci:

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

UserPrincipal user = UserPrincipal.FindByIdentity("some user name"); 

PrincipalSearchResult<Principal> userGroups = user.GetGroups(); 

foreach (Principal p in myGroups) 
{ 
    GroupPrincipal gp = (p as GroupPrincipal); 

    if (gp != null) 
    { 
     int memberCount = gp.Members.Count; 
    } 
} 

De cette façon, vous pouvez énumérer tous les groupes d'un utilisateur donné, et l'énumération de ces groupes, vous pouvez savoir combien de membres (utilisateurs et d'autres groupes) chaque groupe a.

Questions connexes