我正在尝试从未加入域的计算机上运行密码更改应用程序。从加入域的计算机上运行时,代码工作正常。所以现在,我通过SSL通过直接LDAP连接连接到AD。调用changepassword方法后,出现错误:
由于机器不可用或访问被拒绝,所以无法从域控制器读取配置信息。 (来自HRESULT的异常:0x80070547)。
我正在使用具有更改用户密码权限的服务帐户建立连接并运行该应用程序。
string adminUser = Domain + @"\" + Adminusername;
string adminPass = AdminUserPassword;
string ldapString = LDAPString;
DirectoryEntry de = new DirectoryEntry(ldapString,adminUser,adminPass,AuthenticationTypes.Secure);
DirectorySearcher deSearch = new DirectorySearcher(de) { SearchRoot = de,Filter = "(&(objectCategory=user)(cn=" + username + "))" };
SearchResult result = deSearch.FindOne();
if (result != null)
{
var adContext = new PrincipalContext(ContextType.Domain);
currentdc = adContext.ConnectedServer;
DirectoryEntry userEntry = result.GetDirectoryEntry();
if (userEntry != null)
{
userEntry.Invoke("ChangePassword",new object[] { OldPassword,NewPassword });
}
}