2010-03-11 9 views
3

Je veux savoir si un utilisateur donné est membre d'un groupe ou pas. Maintenant, je ne sais pas grand-chose sur les serveurs ActiveDirecory ou Exchange, mais dans Outlook, je peux voir qu'un utilisateur peut être "memberOf" un groupe (et je peux interroger ces groupes avec DirectorySearcher.PropertiesToLoad.Add("memberof");), mais il y a aussi d'autres groupes pas activement membres de, mais que contiennent utilisateurs. Si vous envoyez un mail à ces groupes (ou alias) vous atteignez tous les utilisateurs qu'il contient.ActiveDirectory DirectorySearcher: Vérifie si l'utilisateur est membre d'un groupe

Fondamentalement, donné un nom d'utilisateur (comme DOMAIN\JDoe), comment vérifier si elle est contenue dans le groupe FUNNY_USERS en C#?

Merci

Répondre

11

Utilisez l'espace de noms System.DirectoryServices.AccountManagement ajouté en .Net 3.5 si elle est disponible. Voici un exemple de vérification de groupe:

using(var pc = new PrincipalContext(ContextType.Domain)) 
using(var user = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, "DOMAIN\JDoe")) 
using(var group = GroupPrincipal.FindByIdentity(pc, "FUNNY_USERS")) 
{ 
    return user.IsMemberOf(group); 
} 
+1

Vous devez disposer de PC, utilisateur et groupe. – hwiechers

+0

Il ne montre pas le parent des parents (le groupe A a imbriqué le groupe B, l'utilisateur X membre de B - userX.IsMemberOf (GroupA) = false). Y at-il un moyen de le faire fonctionner sans codage récursion? –

1

Les utilisateurs que vous voyez dans Outlook sont probablement des groupes de distribution. Il existe des groupes de distribution et des groupes de sécurité dans Active Directory. Il semble que vous voulez vérifier pour/ou.

Voir mon post à this similar question pour un exemple en C# en utilisant uniquement les appels ldap

Questions connexes