Доступ к пользователю напрямую через DirectoryEntry кажется наиболее простым подходом. Вот некоторые нюансы, связанные с AD, которые я узнал из своего первого проекта, связанного с AD:
- В URI напишите LDAP строчными буквами. В противном случае вы получите загадочную ошибку. Я потратил больше дня на эту удручающую проблему ...
- Чтобы очистить однозначное свойство, установите для него пустую строку, а не нуль. Ноль вызывает исключение.
- Чтобы очистить многозначное свойство, используйте метод DirectoryEntry.Property.Clear () .
- В ссылке на схему Active Directory будет указано, каким типом данных будет значение и является ли оно многозначным или однозначным.
- Вам не нужно вручную RefreshCache () для объекта каталога, но если вы когда-либо будете использовать его и указать, какие свойства следует кэшировать, знайте, что в будущем он не будет автоматически извлекать другие свойства.
- Исключение COMException может создаваться в любое время, когда вы используете классы в System.DirectoryServices. Следите за этими пробными блоками. Не думайте, что что-то безопасно.
Вам, вероятно, понадобится использовать DirectorySearcher, чтобы получить запись каталога вашего пользователя, если вы не знаете его путь (чего вы не знали бы, просто войдя в него). Использовать его было довольно просто, но остерегайтесь причуд в синтаксисе LDAP; а именно, необходимость кодировать не-ASCII (и другие?) символы. Строка поиска, которую вы будете использовать, вероятно, будет выглядеть примерно так: (& (sAMAccountName = что угодно) (class = user)) . Это от макушки головы и может быть немного неправильным.
Будет полезна ссылка на схему Active Directory . Поймите, что схема может быть изменена и расширена (например, установка Exchange добавит пользователям информацию о почтовом ящике).
AD Explorer - это полезный инструмент, который можно использовать для отладки и низкоуровневого управления данными AD. Я нашел это полезным, когда я знаю, какое свойство я хочу установить, но не могу найти правильное диалоговое окно в инструменте управления AD.