嗨,我尝试重置的Active Directory用户的密码,但我得到的错误,以下是我的代码:错误的密码更改的Active Directory用户
public string ChangePassword(string Identity,string OldPassword, string Password)
{
string success = "Success";
try
{
DirectoryEntry UserEntry = null;
DirectoryEntry entry = new DirectoryEntry("LDAP://.../DC=Domain,DC=COM", Identity, OldPassword);
DirectorySearcher search = new DirectorySearcher(entry);
SearchResult resultsearch = search.FindOne();
if (resultsearch == null)
{
success = "User Not Found In This Domain";
}
else
{
success = "find";
UserEntry = resultsearch.GetDirectoryEntry();
UserEntry.Username = @"Domain\Administrator";
UserEntry.Password = "password";
UserEntry.AuthenticationType = AuthenticationTypes.None;
if (UserEntry == null)
success = "User Not Found In This Domain";
else
{
try
{
success = UserEntry.Username.ToString();
UserEntry.Invoke("ChangePassword", new object[] { OldPassword, Password });
UserEntry.CommitChanges();
}
catch (Exception ex)
{
success = ex.ToString();
}
}
}
}
catch (Exception ex)
{
success = ex.ToString();
}
在UserEntry.Invoke所以我得到错误(“ChangePassword”,新对象[] {OldPassword,Password}); UserEntry.CommitChanges();
错误:
System.Runtime.InteropServices.COMException (0x80020006): Unknown name. (Exception from HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))
at System.DirectoryServices.DirectoryEntry.Invoke(String methodName, Object[] args)
at WebService.ChangePassword(String Identity, String OldPassword, String Password) in c:\inetpub\wwwroot\WebSite1\App_Code\WebService.cs:line 370
@迈克尔·托德是的,我只是改变名称,但其正确的域和我有管理员权限。 – Hiren 2012-04-17 22:21:59
是否有你没有使用新的'System.DirectoryServices.AccountManagement' API的原因?它是'UserPrincipal'类_has_ ['ChangePassword'](http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.authenticableprincipal.changepassword.aspx)方法,工作得很好。 – 2012-04-17 22:26:24
是的,我可以理解,它看起来像API不包括changepassword方法,@ M.Babcock - 我使用system.DirectoryServices.dll,我应该使用任何其他的DLL文件? – Hiren 2012-04-17 22:31:58