我尝试在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))
我也禁用了密码策略。有什么建议吗?
答案 0 :(得分:3)
您的代码运行的帐户没有权限。您有两种选择:
PrincipalContext
并传递有权设置密码的用户名和密码:var context = new PrincipalContext(ContextType.Domain, "test.com", "domain\username", "password");