2010-03-11 3 views
3

Я хочу знать, является ли данный пользователь членом группы или нет. Теперь я мало знаю о серверах ActiveDirecory или Exchange, но в Outlook я вижу, что пользователь может быть «memberOf» группой (и я могу запросить эти группы с помощью DirectorySearcher.PropertiesToLoad.Add("memberof");), но есть и другие группы, не активно членов, но что содержит пользователей. Если вы отправляете сообщения этим группам (или псевдонимам), вы получаете доступ ко всем пользователям, содержащимся в нем.ActiveDirectory DirectorySearcher: проверьте, является ли пользователь членом группы

В принципе, учитывая имя пользователя (например, DOMAIN\JDoe), как проверить, содержится ли он в группе FUNNY_USERS в C#?

Благодаря

ответ

11

Используйте System.DirectoryServices.AccountManagement пространство имен добавлен в .NET 3.5, если он доступен. Вот пример групповой проверки:

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

Вы должны избавиться от ПК, пользователя и группы. – hwiechers

+0

Он не отображает родителя родителей (группа A имеет вложенную группу B, пользовательский член X из B - userX.IsMemberOf (GroupA) = false). Есть ли способ заставить его работать без рекурсии кодирования? –

1

Пользователи, которых вы видите в Outlook, вероятно, являются группами рассылки. В Active Directory есть группы рассылки и группы безопасности. Кажется, что вы хотите проверить или/или.

Смотрите мой пост в this similar question для примера в C# с использованием только LDAP вызывает

Смежные вопросы