检查Active Directory服务器上的密码重置

本文关键字:密码 Active Directory 服务器 检查 | 更新日期: 2023-09-27 17:51:10

我需要通过我的。net应用程序重置任何用户的windows密码。我使用用户的用户名从AD服务器获取其目录条目。我有两种不同的方法来更改密码:

entry.Invoke("ChangePassword", oldPass, newPass);

entry.Invoke("SetPassword", "pass@123");

但是当我在现场AD服务器上尝试这些方法时,我得到以下错误:

Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

我有2个AD服务器。其中一个是实时的,另一个是用于测试目的。我只是想检查一下我的代码是否正常工作。因为,访问被拒绝在实时服务器上,我不能改变和检查以后我自己的密码通过代码。如果我使用的是测试AD服务器更改密码,我不知道如何检查密码是否更改。请给出任何建议,以检查我的代码是否正常工作。

检查Active Directory服务器上的密码重置

我认为您在调用调用之前没有得到适当的上下文设置。这是我用来做类似事情的。您需要设置自己的变量:

我使用System.DirectoryServices.AccountManagement来获得函数。

//Domain related info
string _DCToUse = "myserver.domain.local";
string _ADConDomain = "DC=domain,DC=local";
string _AdDomain = "domain";
string _ADAdminUser = "administrator";
string _ADAdminPass = "password";
//User specific
string _UserName = "jsmith";
string _CurrentPass = "oldPass";
string _NewPass = "newPass";
    PrincipalContext principalContext =
      new PrincipalContext(ContextType.Domain, _DCToUse,
      _ADConDomain, _ADDomain+@"'"+_ADAdminUser, _ADAdminPass);
    UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, _UserName);
        if (user == null)
        {
             string ADErrorMsg = "Couldn't find user, check your spelling.";
             return Changed;
        }
        user.ChangePassword(oldPass, newPass);
        user.Save();