UnauthorizedAccessException:更改AD密码时拒绝访问

Ish*_*awa 1 c# active-directory

我尝试为Server 2012中的更新域用户密码编写C#代码。我根据此堆栈溢出答案使用以下代码

using (var context = new PrincipalContext(ContextType.Domain, "test.com"))
{
    using (var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, userName))
    {
        user.SetPassword(newPassword);
        //user.ChangePassword(oldPassword, newPassword);
        user.Save();
    }
}
Run Code Online (Sandbox Code Playgroud)

运行代码时获取以下异常

System.Reflection.TargetInvocationException:调用的目标引发了异常。--->
System.UnauthorizedAccessException:访问被拒绝。(来自HRESULT的异常:0x80070005(E_ACCESSDENIED))

我也禁用了密码策略。有什么建议吗?

Gab*_*uci 5

您的代码所运行的帐户没有权限。您有两种选择:

  1. 在具有正确权限的凭据下运行程序,或者
  2. 使用其他构造函数PrincipalContext并传递具有设置密码权限的用户名和密码:
var context = new PrincipalContext(ContextType.Domain, "test.com", "domain\username", "password");
Run Code Online (Sandbox Code Playgroud)