"C# для профессионалов. Том II" - читать интересную книгу автора (Робинсон Симон, Корнес Олли, Глинн Джей,...)

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

Объекты в активном каталоге обновляются так же легко, как и читаются. Изменение значений возможно после считывания объекта. Чтобы удалить все значения одного свойства, может вызываться метод 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() после создания или обновления новых объектов каталога. Иначе обновляется только кэш, а изменения не посылаются службе каталога.