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

时间:2018-01-24 11:38:43

标签: c# active-directory

我尝试在Server 2012中为更新域用户密码编写C#代码。我根据this Stack Overflow answer使用以下代码

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();
    }
}

在运行代码时获得以下异常

  

System.Reflection.TargetInvocationException:抛出了异常   通过调用的目标。 --->
  System.UnauthorizedAccessException:拒绝访问。 (例外   HRESULT:0x80070005(E_ACCESSDENIED))

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

1 个答案:

答案 0 :(得分:3)

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

  1. 在具有正确权限的凭据下运行您的程序,或
  2. 使用different constructor for PrincipalContext并传递有权设置密码的用户名和密码:
  3. var context = new PrincipalContext(ContextType.Domain, "test.com", "domain\username", "password");