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

на главную

Жанры

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
.

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

Измена. Я отомщу тебе, предатель

Вин Аманда
1. Измены
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Измена. Я отомщу тебе, предатель

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад

Мимик нового Мира 6

Северный Лис
5. Мимик!
Фантастика:
юмористическая фантастика
попаданцы
рпг
5.00
рейтинг книги
Мимик нового Мира 6

Идеальный мир для Лекаря 2

Сапфир Олег
2. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 2

Начальник милиции

Дамиров Рафаэль
1. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции

Магия чистых душ

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Магия чистых душ

Темный Патриарх Светлого Рода 4

Лисицин Евгений
4. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 4

Стрелок

Астахов Евгений Евгеньевич
5. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Стрелок

На границе империй. Том 6

INDIGO
6. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.31
рейтинг книги
На границе империй. Том 6

Архил…? Книга 3

Кожевников Павел
3. Архил...?
Фантастика:
фэнтези
попаданцы
альтернативная история
7.00
рейтинг книги
Архил…? Книга 3

Доктора вызывали? или Трудовые будни попаданки

Марей Соня
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки

Лорд Системы 11

Токсик Саша
11. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 11

Черный Маг Императора 5

Герда Александр
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 5

Последний попаданец 2

Зубов Константин
2. Последний попаданец
Фантастика:
юмористическая фантастика
попаданцы
рпг
7.50
рейтинг книги
Последний попаданец 2