Active Directory DirectorySearcher:检查用户是否是组的成员

时间:2010-03-11 11:02:46

标签: c# active-directory

我想知道给定用户是否是某个组的成员。现在,我对ActiveDirecory或Exchange服务器了解不多,但在Outlook中我可以看到用户可以成为“memberOf”组(我可以用DirectorySearcher.PropertiesToLoad.Add("memberof");查询这些组),但也有其他用户不是主动 成员但包含用户的群组。如果您邮寄到这些组(或别名),则会覆盖其中包含的所有用户。

基本上,给定一个用户名(如DOMAIN\JDoe),如何检查它是否包含在C#中的组FUNNY_USERS中?

由于

3 个答案:

答案 0 :(得分:12)

使用.Net 3.5中添加的System.DirectoryServices.AccountManagement命名空间(如果可用)。以下是组检查的示例:

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 :(得分:1)

获取小组中的所有成员:

http://snipplr.com/view/4646/get-members-of-an-active-directory-distribution-group/

一旦你有了列表,只需循环一次用户名。

或者:

Function to return all the groups the user is a member of

答案 2 :(得分:1)

您在Outlook中看到的用户可能是通讯组。 Active Directory中有通讯组和安全组。看起来你想要检查/或。

请参阅this similar question上的帖子,了解仅使用ldap调用的C#中的示例