访问被拒绝 HRESULT 的异常:0x80070005 (E_ACCESSDENIED)在为某些用户重置密码时

问题描述

我在尝试重置某些用户密码时遇到上述错误
错误不会发生在所有用户身上,而只会发生在部分用户身上。

代码片段

        PrincipalContext principalContext = null;
        try {
            principalContext = new PrincipalContext(ContextType.Domain,DomainName,ServiceAC,ServicePWD);
        } catch (Exception e) {
            **code omitted**
        }

        UserPrincipal usr = null;

        try{
           
            usr = UserPrincipal.FindByIdentity(principalContext,user.userName);

        } catch(Exception e){
            **code omitted**
        }

    

        //user is available in active directory change password
        var newPassword = requestedPassword;
        usr.SetPassword(newPassword); // **This line throws error**

        usr.Enabled = true;


        try {
            usr.Save();
        } catch (Exception e) {
            **code omitted**
        }

调用 setPassword 时,会抛出以下错误

堆栈跟踪

  Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
  at System.DirectoryServices.DirectoryEntry.Invoke(String methodName,Object[] args)
  at System.DirectoryServices.AccountManagement.SDSUtils.SetPassword(DirectoryEntry de,String 
  newPassword)
  at System.DirectoryServices.AccountManagement.ADStoreCtx.SetPassword(AuthenticablePrincipal 
  p,String newPassword)
  at System.DirectoryServices.AccountManagement.PasswordInfo.SetPassword(String newPassword)
  at System.DirectoryServices.AccountManagement.AuthenticablePrincipal.SetPassword(String 
  newPassword)```


解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)