Active Directory, перечисление групп пользователей, исключение COM - PullRequest
1 голос
/ 21 апреля 2011

при перечислении групп текущего пользователя через AD .NET API я иногда получаю

COMException: Unknown error (0x80005000)

Вот мой код:

        var userName = Environment.UserName;

        var context = new PrincipalContext(ContextType.Domain);
        var user = UserPrincipal.FindByIdentity(context, userName);

        foreach (var userGroup in user.GetGroups())
        {
            Console.WriteLine(userGroup.Name);
        }

В чем проблема? Я думал, что каждый пользователь может получить список групп HIS? Это кажется странным поведением, иногда это можно воспроизвести так: при работе на ПК 'userA' происходит сбой, но он успешно перечисляет ДРУГИЕ группы 'userB' (в разделе ' ПользовательА! ')

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

Попробуйте использовать

var context = new PrincipalContext(ContextType.Domain, "yourcompany.com", "DC=yourcompany,DC=com", ContextOptions.Negotiate);

Если для ContextOption установлено значение Negotioate, клиент проходит проверку подлинности с использованием Kerberos или NTLM, поэтому даже если имя пользователя и пароль не указаны, API управления учетными записями привязывается к объекту с использованием контекста безопасности вызывающего потока.

1 голос
/ 24 сентября 2013

У меня была такая же проблема, я решил ее, указав имя домена при создании PrincipalContext:

var domain = new PrincipalContext(ContextType.Domain, Environment.UserDomainName);
var user = UserPrincipal.FindByIdentity(domain, Environment.UserName);
1 голос
/ 21 апреля 2011

0x80005000 = E_ADS_BAD_PATHNAME, поэтому вы указали недопустимый рекламный путь где-то, может быть, вы должны добавить LDAP: // префикс или оппозит делают это дважды?Установите точку останова и проверьте значение ...

РЕДАКТИРОВАТЬ: AdsPath должно быть значение типа "LDAP: // CN = Администратор, CN = Пользователи, DC = contoso, DC = com"кажется, у вас неправильный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...