Проблема членов группы Active Directory - PullRequest
0 голосов
/ 08 апреля 2010

Я использую приведенный ниже код для получения участников из группы.

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;

}

Это хорошо работает для всех групп, но когда я перехожу к группе пользователей, я получаюошибка ниже

"Произошла ошибка (87) при перечислении групп. Не удалось разрешить SID группы."

1 Ответ

1 голос
/ 08 апреля 2010

Users в Active Directory - это , а не группа - это контейнер. Вот почему вы не можете перечислить его как группу - вам придется перечислять его как 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...