Функции System.DirectoryServices.AccountManagement не могут проверять некоторые машины (но не другие) - PullRequest
0 голосов
/ 21 мая 2010

Как рабочие, так и неуспешные цели являются машинами в одном домене. Код внизу Когда я использую его на некоторых компьютерах в моем домене, я получаю System.DirectoryServices.AccountManagement.PrincipalOperationException с сообщением: «При попытке получить группы авторизации произошла ошибка (1332)» Ошибка генерируется GetAuthorizationGroups ().

Примечание. В обоих случаях имя пользователя, которое я использую для подключения, является локальным администратором машины.

    PrincipalContext ctx = new PrincipalContext(ContextType.Machine, machineName, domainname + "\\" + adminusername, pass);
    List<Principal> retList = new List<Principal>();

    using (var user = UserPrincipal.FindByIdentity(ctx, probedusername))
    {
        if (user != null)
        {
            PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();
            foreach (Principal group in groups)
            {
                retList.Add(group);
            }
        }
    }

1 Ответ

0 голосов
/ 22 июня 2010

Я не знаю, если у вас все еще есть проблемы с этим ... У меня была почти идентичная проблема, и мы не могли понять это также в течение самого долгого времени. Наконец, мы удалили имя пользователя / пароль из экземпляра PrincipalContext, и это сработало на всех машинах ... действительно странно, но это нас порадовало.

Без имени пользователя / пароля он запускается под текущей учетной записью, и в целом все прошедшие проверку пользователи могут считывать информацию о группе с удаленного компьютера в том же домене (по крайней мере, в нашем домене). С указанным именем пользователя и паролем мы получили бы ДЕЙСТВИТЕЛЬНО странные результаты, когда иногда возвращались только доменные группы, иногда вообще никаких групп, иногда доступ к запрещенным сообщениям ... В любом случае это работало для нас.

...