Книга: C# для профессионалов. Том II
Создание новых объектов
Создание новых объектов
Новые объекты активного каталога, такие как пользователи, компьютеры, принтеры, контакты и другие программным путем можно создать с помощью класса 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();
- Вставка новых записей
- Создание нового окна программного кода
- 17.3.1. Изменение макета слайда, создание новых слайдов
- 14.3. Создание и удаление каталогов
- Создание атрибутов
- Создание файлов с блокировкой
- Иерархия объектов в InterBase
- Создание свободно позиционируемых элементов
- Имена объектов длиной 68 символов
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Создание объектов Collection
- 7.4.2.4. Создание своего первого LiveCD