Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

Запись изменений в объекты также происходит только в кэше. Задание множества свойств не генерирует сетевого трафика. Метод

DirectoryEntry.CommitChanges
требуется для очистки кэша и переноса всех измененных данных на сервер. Чтобы снова получить вновь записанные данные из хранилища каталога, можно для чтения свойств использовать метод
DirectoryEntry.RefreshCache
. Задание свойства
UsePropertyCache
как
false
может быть очень полезно для отладки, чтобы увидеть, какое свойство было изменено неправильно.

Обновление записей каталога

Объекты в активном каталоге обновляются так же легко, как и читаются. Изменение значений возможно после считывания объекта. Чтобы удалить все значения одного свойства, может вызываться метод

PropertyValueCollection.Clear
. С помощью метода
Add
к свойству могут добавляться новые значения.
Remove
и
RemoveAt
удаляют специфические значения из коллекции свойства:

using (DirectoryEntry de = new DirectoryEntry!)) {

 de.Path =

"LDAP://celticrain/CN=Christian Nagel, " +

"OU=Wrox Press, DC=eichkogelstrasse, DC=local";

 if (de.Properties.Contains("mobile")) {

de.Properties["mobile"][0] = "+43 (664) 3434343434";

 }

 de.CommitChanges;

}

Чтобы изменить значение, зададим ему определенное значение. Посредством следующей строки кода для номера мобильного телефона задается новое значение, если оно существует, с использованием индекса

PropertyValueCollection
. С помощью индекса значение может только изменяться. Поэтому необходимо всегда проверять методом
DirectoryEntry.Properties.Contains
, доступен ли атрибут:

de.Properties["mobile"][0] = "+43 (664) 3434343434";

He забудьте вызвать метод

DirectoryEntry.CommitChanges
после создания или обновления новых объектов каталога. Иначе обновляется только кэш, а изменения не посылаются службе каталога.

Создание новых объектов

Новые объекты активного каталога, такие как пользователи, компьютеры, принтеры, контакты и другие программным путем можно создать с помощью класса

DirectoryEntries
.

Чтобы добавить новые объекты в каталог, мы должны сначала соединиться с объектом-контейнером, подобным организационной единице, куда можно вставить новые объекты. Объекты, которые не могут содержать другие объекты, использовать нельзя. Здесь используется контейнерный объект с известным именем

CN=Users, DC=eichkogelstrasse, DC=local
:

DirectoryEntry de = new DirectoryEntry;

de.Path = "LDAP://celticrain/CN=Users, " +

 "DC=eichkogelstrasse, DC=local";

Можно получить доступ к объекту

DirectoryEntries
с помощью свойства
Children
объекта
DirectoryEntry
:

DirectoryEntries users = de.Children;

Объект

DirectoryEntries
имеет методы для добавления, удаления, и поиска объектов в коллекции. Здесь создается новый объект пользователя. Для метода
Add
нам нужно имя объекта и имя типа. Можно легко получить имена типов с помощью ADSI Edit.

DirectoryEntry user = users.Add("John Doe", "user");

Объект теперь имеет значения свойств по умолчанию. Чтобы присвоить специальные значения свойств, можно добавить свойства с помощью метода

Add
свойства
Properties
. Конечно, все свойства должны существовать в схеме для объекта пользователя. Если определенное свойство не существует, то возникнет исключение
COMException
"The specified directory service attribute or value doesn't exist" ("Указанный атрибут или значение службы каталога не существует"). Если имена атрибутов правильны, но сервер отказывает во входе в связи с незаконным паролем или пропущенным свойством, исключение
COMException
будет содержать сообщение "The server is unwilling to process the request" ("Сервер не желает обрабатывать запрос").

user.Properties["company"].Add("Some Company");

user.Properties["department"].Add("Sales");

user.properties["employeeID"].Add("4711");

user.Properties["samAccountName"].Add("John Doe");

user.Properties["userPassword"].Add("someSecret");

В данный момент не все данные записаны в активный каталог. Необходимо очистить кэш:

user.CommitChanges;

Поиск в активном каталоге

  • Читать дальше
  • 1
  • ...
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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