2015-11-14 4 views
0

Используя эти 2 примера:Как получить список пользователей Active Directory на не контроллер домена

  1. http://blogs.technet.com/b/brad_rutkowski/archive/2008/04/15/c-getting-members-of-a-group-the-easy-way-with-net-3-5-discussion-groups-nested-recursive-security-groups-etc.aspx

    или

  2. Get members of Active Directory Group and check if they are enabled or disabled

Я был в состоянии заставить пользователей из «Пользователи домена» при запуске их на контроллере домена.

Тем не менее, я не смог найти членскую машину, принадлежащую к одному домену.

Я даже вход в машину члена в качестве администратора домена

Ошибки, сообщения:

Пример 1

Необработанного исключения: System.Runtime.InteropServices.COMException: Указанный домен не существует или не может быть связано.

Пример 2

Необработанное исключение: System.DirectoryServices.AccountManagement.PrincipalServerDownException: Сервер не может связаться. ---> System.DirectoryServices.Protocols.LdapException: сервер LDAP недоступен.

Может ли кто-нибудь указать мне пример или как исправить эту проблему?

Спасибо.

ответ

0

Учетные записи, которые являются локальными для рабочей станции или сервера, не являются учетными записями Active Directory, даже если сам компьютер является членом домена Active Directory. API-интерфейсы Active Directory обычно используют LDAP для подключения к контроллеру домена (DC), который не будет работать для локальных учетных записей, поскольку в нем нет DC.

Предполагая, что вы работаете с локальными пользователями и группами, вы можете использовать API System.DirectoryServices.AccountManagement для получения локальных пользователей и групп. Класс DirectoryContext предоставляет свойство ContextType, которое вы установите на Machine для доступа к локальным пользователям и группам.

Код ниже приведен простой пример, который будет список всех пользователей на поставленной станции:

string workstationName = null; // null --> localhost 
PrincipalContext cxt = new PrincipalContext(ContextType.Machine, workstationName); 
foreach (var u in new PrincipalSearcher(new UserPrincipal(cxt)).FindAll()) 
{ 
    var userPrincipal = u as UserPrincipal; 
    Console.WriteLine(u.Name); 
} 
+0

Спасибо за помощь. – user1121055

Смежные вопросы