我想知道给定用户是否是某个组的成员。现在,我对ActiveDirecory或Exchange服务器了解不多,但在Outlook中我可以看到用户可以成为“memberOf”组(我可以用DirectorySearcher.PropertiesToLoad.Add("memberof");
查询这些组),但也有其他用户不是主动 成员但包含用户的群组。如果您邮寄到这些组(或别名),则会覆盖其中包含的所有用户。
基本上,给定一个用户名(如DOMAIN\JDoe
),如何检查它是否包含在C#中的组FUNNY_USERS
中?
由于
答案 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/
一旦你有了列表,只需循环一次用户名。
或者:
答案 2 :(得分:1)
您在Outlook中看到的用户可能是通讯组。 Active Directory中有通讯组和安全组。看起来你想要检查/或。
请参阅this similar question上的帖子,了解仅使用ldap调用的C#中的示例