Я пытаюсь изменить определенные свойства для пользователей в нашем активном каталоге. Некоторые свойства я могу изменить, а некоторые я не могу. Я делаю олицетворение, но для некоторых свойств я все еще получаю «Общедоступную ошибку, запрещенную», когда я пытаюсь вызвать CommitChanges ().
Например, это будет работать:
DirectoryEntry deUser = new DirectoryEntry(result.Path);
if (ImpersonateValidUser(adConnectionUsername, adConnectionDomain, adConnectionPassword))
{
deUser.Properties["ampPasswordQuestion"].Value = newPasswordQuestion;
deUser.Properties["ampPasswordAnswer"].Value = newPasswordAnswer;
deUser.CommitChanges();
deUser.Close();
UndoImpersonation();
}
Это работает предположительно, потому что мы вручную добавили свойства в схему AD без ограничений доступа. (См. ASP.NET 3.5 Безопасность, членство и управление ролями с помощью C # и VB )
Однако, если я попытаюсь изменить что-то вроде свойства Comment записи следующим образом:
DirectoryEntry deUser = new DirectoryEntry(result.Path);
if (ImpersonateValidUser(adConnectionUsername, adConnectionDomain, adConnectionPassword))
{
deUser.Properties["comment"].Value = comment;
deUser.CommitChanges();
deUser.Close();
UndoImpersonation();
}
Тогда я получу «Общая ошибка доступа запрещена».
У кого-нибудь есть идеи?
Код Impersionation от Microsoft находится по адресу: http://support.microsoft.com/kb/306158