C#在Active Directory中获取用户所属的组

C#在Active Directory中获取用户所属的组,c#,active-directory,C#,Active Directory,我不是天生的程序员,所以我提前道歉:)我使用的是来自的代码片段,它真的很有用。我正在使用他的方法获取用户组成员资格,它还需要他的AttributeValuesMultiString方法。我没有任何语法错误,但是当我通过Groups(“username”,true)调用Groups方法时,我得到以下错误: System.DirectoryServices.dll中发生类型为“System.Runtime.InteropServices.COMException”的未处理异常 我已经做了一些挖掘,但

我不是天生的程序员,所以我提前道歉:)我使用的是来自的代码片段,它真的很有用。我正在使用他的方法获取用户组成员资格,它还需要他的
AttributeValuesMultiString
方法。我没有任何语法错误,但是当我通过
Groups(“username”,true)
调用
Groups
方法时,我得到以下错误:

System.DirectoryServices.dll中发生类型为“System.Runtime.InteropServices.COMException”的未处理异常


我已经做了一些挖掘,但似乎没有任何东西真正回答我为什么会出现这个错误。

您应该查看
System.DirectoryServices.AccountManagement
(S.DS.AM)命名空间。请在此处阅读所有相关内容:

基本上,您可以定义域上下文并在AD中轻松找到用户和/或组:

// set up domain context
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
    // find a user
    UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

    if(user != null)
    {
       // get the user's groups
       var groups = user.GetAuthorizationGroups();

       foreach(GroupPrincipal group in groups)
       {
           // do whatever you need to do with those groups
       }
    }

}

新的S.DS.AM使得在广告中与用户和群组进行互动变得非常容易

请在您的问题正文中发布相关代码,以便将来对其他人有用——如果链接出现问题,此问题将毫无意义。请改用PrincipalContext,它的代码更小,更易于管理这里是您的一个示例@DJ Kraze:太好了!非常感谢。欢迎您的光临,我很高兴您愿意从另一个角度来看待这一点,我也同意S.DS.am更简单——当它起作用时。但是请注意,它有一些微软似乎无法/不愿意修复的bug:我总是发现AccountManagement DLL存在不一致的问题。这是一场噩梦。@marc-s如果你想要那些未经授权的团体怎么办groups@JsonStatham:在用户对象上,有另一个名为user.GetGroups()的函数。也许这就是你想要的。