Active Directory组成员问题

时间:2010-04-08 10:05:01

标签: c# active-directory

我使用以下代码从一个组中获取成员。

private static List<string> GetGroupMembers(string groupName)
{
  Tracer.LogEntrace(groupName);

  List<string> retVal = new List<string>();

  GroupPrincipal groupPrincipal = 
    GroupPrincipal.FindByIdentity(
      new PrincipalContext(ContextType.Domain), 
      IdentityType.SamAccountName,
      groupName);

  PrincipalSearchResult<Principal> principleSearchResult = 
    groupPrincipal.GetMembers(true);

  if (principleSearchResult != null)
  {
     try
     {
        foreach (Principal item in principleSearchResult)
           retVal.Add(item.DistinguishedName);
     }
     catch (Exception ex)
     {
        Tracer.Log(ex.Message);
     }
  }
  else
  {
    //Do Nothing
  }

  Tracer.LogExit(retVal.Count);

  return retVal;

}

它适用于所有组,但当它来到Users组时,我收到以下错误

  

“发生错误(87)   枚举组。小组的   SID无法解决。“

1 个答案:

答案 0 :(得分:1)

Active Directory中的

Users 不是群组 - 它是一个容器。这就是为什么你不能像群组一样枚举它 - 你必须像OU(组织单位)那样枚举它。

类似的东西:

// bind to the "Users" container
DirectoryEntry deUsers = new DirectoryEntry("LDAP://CN=Users,DC=yourcompany,DC=com");

// enumerate over its child entries
foreach(DirectoryEntry deChild in deUsers.Children)
{
   // do whatever you need to do to those entries
}