Чтение онлайн

на главную - закладки

Жанры

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

searcher.PropertiesToLoad.Add("name");

searcher.PropertiesToLoad.Add("description");

searcher. PropertiesToLoad.Add("givenName");

searcher.PropertiesToLoad.Add("wWWHomePage");

Мы готовы начать поиск. Однако, результат необходимо отсортировать.

DirectorySearcher
имеет свойство
Sort
, где можно задать
SortOption
. Первый аргумент конструктора
SortOption
определяет свойство, по которому будет проводиться
сортировка, второй аргумент определяет направление сортировки. Перечисление
SortDirection
имеет значения
Ascending
и
Descending
.

Чтобы начать поиск, можно использовать метод

FindOne
для нахождения первого объекта или
FindAll
, чтобы найти все объекты.
FindOne
вернет простой
SearchResult
,
FindAll
вернет
SearchResultCollection
. Мы хотим получить всех авторов, поэтому используем
FindAll
:

searcher.Sort = new SortOption("givenName", SortDirection.Ascending);

SearchResultCollection Results = searcher.FindAll;

С помощью цикла

foreach
мы получаем доступ ко всем
SearchResult
в
SearchResultCollection
.
SearchResult
представляет один объект в кэше поиска. Свойство
Properties
возвращает
ResultPropertyCollection
, где мы получаем доступ ко всем свойствам и значениям по имени свойства и по индексу.

SearchResultCollection results = Searcher.FindAll;

 foreach (SearchResult result in results) {

ResutPropertyCollection props = result.Properties;

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 этой схемы используется в вызове
SetUserProperties
для задания свойств в окне списка:

private void buttonLoadProperties_Click(object sender, System.EventArgs e) {

 try {

SetLogonInformation;

SetNamingContext;

SetUserProperties(schemaNamingContext);

 } catch (Exception ex) {

MessageBox.Show("Cheek your inputs! " + ex.Message);

 }

}

protected void SetLogonInformation {

 username =

(textBoxUsername.Text == "" ? null :

textBoxUsername.Text);

 password =

(textBoxPassword.Text == "" ? null :

textBoxPassword.Text);

 hostname = textBoxHostname.Text;

 if (hostname ! = "") hostname += "/";

}

Во вспомогательном методе

SetNamingContext
мы используем корень дерева каталога для получения свойств сервера. Мы заинтересованы в значениях двух свойств:
SchemaNamingContext
.

Поделиться:
Популярные книги

Город Богов 3

Парсиев Дмитрий
3. Профсоюз водителей грузовых драконов
Фантастика:
юмористическое фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Город Богов 3

Амазония

Роллинс Джеймс
101. Книга-загадка, книга-бестселлер
Приключения:
прочие приключения
9.34
рейтинг книги
Амазония

Свет во мраке

Михайлов Дем Алексеевич
8. Изгой
Фантастика:
фэнтези
7.30
рейтинг книги
Свет во мраке

Владеющий

Злобин Михаил
2. Пророк Дьявола
Фантастика:
фэнтези
8.50
рейтинг книги
Владеющий

Под маской, или Страшилка в академии магии

Цвик Катерина Александровна
Фантастика:
юмористическая фантастика
7.78
рейтинг книги
Под маской, или Страшилка в академии магии

Мастер 2

Чащин Валерий
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Мастер 2

Служанка. Второй шанс для дракона

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Служанка. Второй шанс для дракона

Убивать чтобы жить 6

Бор Жорж
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 6

Я — Легион

Злобин Михаил
3. О чем молчат могилы
Фантастика:
боевая фантастика
7.88
рейтинг книги
Я — Легион

Вечный. Книга II

Рокотов Алексей
2. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга II

Измена. Мой заклятый дракон

Марлин Юлия
Любовные романы:
любовно-фантастические романы
7.50
рейтинг книги
Измена. Мой заклятый дракон

Студент из прошлого тысячелетия

Еслер Андрей
2. Соприкосновение миров
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Студент из прошлого тысячелетия

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

Неудержимый. Книга XXII

Боярский Андрей
22. Неудержимый
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Неудержимый. Книга XXII