Ответ 1
DC - это ваш домен. Если вы хотите подключиться к домену example.com, чем ваш DC: DC = пример, DC = com
На самом деле вам не нужно какое-либо имя хоста или IP-адрес вашего контроллера домена (их может быть много).
Простое изображение, которое вы подключаете к самому домену. Поэтому для подключения к домену example.com вы можете просто написать
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");
И все готово.
Вы также можете указать пользователя и пароль, используемые для подключения:
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com", "username", "password");
Также обязательно указывайте LDAP в верхнем регистре. У меня были некоторые неприятности и странные исключения, пока я не прочитал где-нибудь, что я должен попытаться написать его в верхнем регистре, и это решило мои проблемы.
Свойство directoryEntry.Path
позволяет глубже погрузиться в ваш домен. Поэтому, если вы хотите искать пользователя в определенном подразделении (организационном подразделении), вы можете его установить.
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");
directoryEntry.Path = "LDAP://OU=Specific Users,OU=All Users,OU=Users,DC=example,DC=com";
Это будет соответствовать следующей иерархии AD:
- ком
- Пример
- Пользователи
- Все пользователи
- Конкретные пользователи
- Все пользователи
- Пользователи
- Пример
Просто напишите иерархию от самой глубокой до самой высокой.
Теперь вы можете делать много вещей
Например, найдите пользователя по имени учетной записи и получите его фамилию:
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://example.com");
DirectorySearcher searcher = new DirectorySearcher(directoryEntry) {
PageSize = int.MaxValue,
Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=AnAccountName))"
};
searcher.PropertiesToLoad.Add("sn");
var result = searcher.FindOne();
if (result == null) {
return; // Or whatever you need to do in this case
}
string surname;
if (result.Properties.Contains("sn")) {
surname = result.Properties["sn"][0].ToString();
}