C# ActiveDirectory DirectorySearcher:检查用户是否为组成员

C# ActiveDirectory DirectorySearcher:检查用户是否为组成员,c#,active-directory,C#,Active Directory,我想知道给定的用户是否是组的成员。现在,我对ActiveDirecory或Exchange服务器了解不多,但在Outlook中,我可以看到用户可以是组的“成员”(我可以使用DirectorySearcher.PropertiesToLoad.Add(“memberOf”);)查询这些组),但也有其他用户不是组的积极成员,但包含用户的组。如果您向这些组(或别名)发送邮件,则可以联系其中包含的所有用户 基本上,给定一个用户名(如DOMAIN\JDoe),如何检查它是否包含在C#中的组fully_用户

我想知道给定的用户是否是组的成员。现在,我对ActiveDirecory或Exchange服务器了解不多,但在Outlook中,我可以看到用户可以是组的“成员”(我可以使用DirectorySearcher.PropertiesToLoad.Add(“memberOf”);)查询这些组),但也有其他用户不是组的积极成员,但包含用户的组。如果您向这些组(或别名)发送邮件,则可以联系其中包含的所有用户


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

获取组中的所有成员:

一旦你有了这个列表,只需在用户名之间循环一次

或:

使用.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);
 }

您在Outlook中看到的用户可能是通讯组。Active Directory中有通讯组和安全组。似乎您要检查其中一个/或


请参阅我在上的帖子,了解C#中的一个示例,仅使用ldap调用

您需要处理pc、用户和组。它不显示父级的父级(组A具有嵌套的组B,组B的用户X成员-userX.IsMemberOf(GroupA)=false)。有没有什么方法可以让它在不编码递归的情况下工作?