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

本文关键字:Directory 获取 用户 Active | 更新日期: 2023-09-27 18:21:26

我天生就不是程序员,所以我提前道歉:)我使用的是http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C#39这真的很有帮助。我正在使用他的方法来获取用户组成员资格,这也需要他的AttributeValuesMultiString方法。我没有任何语法错误,但当我通过Groups("username", true)调用Groups方法时,我会得到以下错误:

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

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

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

您应该签出System.DirectoryServices.AccountManagement(S.DS-AM)命名空间。点击此处阅读:

  • 在.NET Framework 3.5中管理目录安全主体
  • System.DirectoryServices.AccountManagement上的MSDN文档

基本上,您可以定义域上下文,并在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让在AD中与用户和组一起玩变得非常容易!