2015-01-29 3 views
1

Предположим, что у нас есть этот контекстПолучить доменное имя из PrincipalContext

private static readonly PrincipalContext Context = 
    new PrincipalContext(ContextType.Domain, "255.255.255.252", 
         "OU=TestOrgUnit,DC=as,DC=asf", 
         "blabla", "12345"); 

Я ищу для пользователей в этой области. Я получаю их имена SomeNickName, но они должны быть DomainName\SomeNickName.

Можно ли получить DomainName от PrincipalContext? Я нашел решение для DirectoryEntry, но не смог преобразовать PrincipalContext в него.

Этот код

DirectoryEntry deBase = new DirectoryEntry("255.255.255.252", "AdminLogin", "PWD"); 

и этот код

DirectoryEntry deBase = new DirectoryEntry("255.255.255.252://OU=TestOrgUnit,DC=as,DC=asf", "AdminLogin", "PWD"); 

бросает исключение, и не работает.

ответ

2

Технически у вас есть информация о домене в DN, указанном для подключения OU (DC = as, DC = asf). Первый DC - это имя pre-Win2K, которое, похоже, является тем, что вы ищете.

Что касается самого PrincipalContext, содержащего информацию о домене, кажется, что это не так.

Если вы хотите использовать DE, чтобы получить больше свойств или сделать ваш поиск пользователя, вам нужно создать его так:

var deBase = new DirectoryEntry("LDAP://255.255.255.252/OU=TestOrgUnit,DC=as,DC=asf", "AdminLogin", "PWD") 
Смежные вопросы