foreach (string propName in props.PropertyNames) {
Console.Write(propName + ": ");
Console.WriteLine(props[propName][0]);
}
Console.WriteLine;
}
}
Если необходимо получить весь объект после поиска, то это также возможна.
SearchResult
имеет метод
GetDirectoryEntry
, который возвращает соответствующую запись
DirectoryEntry
найденного объекта.
Результирующий вывод показывает начале списка всех авторов книги Professional C# с выбранными свойствами
Поиск объектов пользователей
Последнее приложение, которое будет создано в этой главе, это приложение Windows Forms. С его помощью можно найти все объекты пользователей домена с динамически определяемой строкой фильтра. Можно также задать свойства объектов пользователей, которые должны выводиться.
Интерфейс пользователя
Интерфейс пользователя выводит нумерованные шаги, помогая использовать приложение.
1. На
первом шаге можно ввести имя пользователя, пароль и контроллер домена. Вся эта информация является необязательной. Если контроллер домена не вводится, то соединение работает со связыванием без сервера. Если отсутствует имя пользователя, то используется контекст безопасности текущего пользователя.
2. С помощью кнопки все имена свойств объекта
User
могут загружаться динамически в окно списка
ListBoxProperties
.
3. После загрузки имен свойств, можно выбрать свойства, которые должны выводиться. Режим
SelectionMode
окна списка задач как
MultiSimple
.
4. Можно ввести фильтр для ограничения поиска. Значение по умолчанию, которое задается в этом диалоговом окне, ищет все объекты пользователей: (
objectClass=user
).
5. Теперь можно начать поиск.
Получение именующего контекста схемы
Это приложение имеет только два метода обработки событий: первый метод — обработчик для кнопки загрузки свойств и второй — для запуска поиска в домене. В первой части мы динамически считываем свойства класса
User
из схемы для вывода его в интерфейсе пользователя.
В методе-обработчике
buttonLoadProperties_Click
с помощью метода
SetLogonInformation
имя пользователя, пароль и имя хоста считываются во время диалога и сохраняются в членах класса. Затем метод
SetNamingContext
задает имя LDAP схемы и имя LDAP используемого по умолчанию контекста. Имя LDAP этой схемы используется в вызове