Я пытаюсь создать инструмент для самостоятельного сброса пароля для тестового домена. Я использую ASP.NET 4 и IIS 7.
Мой код:
string userDirectoryEntry = "WinNT://domain/" + usermapping[user[1]]
System.DirectoryServices.DirectoryEntry ADEntryToReset = new System.DirectoryServices.DirectoryEntry(userDirectoryEntry);
ADEntryToReset.Invoke("SetPassword", new object[] { newPassword });
ADEntryToReset.Properties["passwordExpired"][0] = 1;
ADEntryToReset.CommitChanges();
Однако при изменении пароля я получаю отказ в доступе. Я изменил пул приложений по умолчанию, чтобы он работал под учетной записью администратора, которая может изменять пароли. Прекрасно работает в отладчике Visual Studio.
Я также попытался явно указать учетные данные для объекта DirectoryEntry (msdn). Это тоже не работает.
Любые идеи?
Возможно, вы захотите использовать LDAP
провайдер вместо pre-2000 WinNT
поставщик, у которого есть некоторые ограничения возможностей по сравнению с LDAP
. В userDirectoryEntry
строка должна начинаться с LDAP://
вместо того WinNT://
Если пример msdn с учетными данными не работает, попробуйте инициализировать DirectoryEntry
объект с учетными данными:
new DirectoryEntry(userDN,callerUsername,callerPwd);