0
ボタンがあり、そのクリックイベントはさまざまな検証コードで実行され、検証に合格すると、メソッド「ChangePassword」が呼び出されます。Active Directoryのパスワード変更に関する問題の処理に関する問題
public void ChangePassword(string userName, string oldPassword, string newPassword)
{
try
{
new ApplusActiveDirectoryUtil().CheckParameter(ref userName, true, true, false, 21, "User Name");
DirectoryEntry userEntry = _directoryInfo.GetUserEntry(userName);
userEntry.Invoke("ChangePassword", new Object[] { oldPassword, newPassword });
//unlock account
userEntry.Properties["LockOutTime"].Value = 0x0000;
userEntry.CommitChanges();
userEntry.Dispose();
userEntry.Close();
}
catch (Exception ex)
{
_directoryInfo.Initialize();
DirectoryEntry domainEntry = _directoryInfo.DomainDirectoryEntry;
ApplusActiveDirectoryDomainPolicy domainPolicy = new ApplusActiveDirectoryDomainPolicy(_directoryInfo.DomainDirectoryEntry);
string message = "Password entered was wrong or password entered was the same as the previous " + domainPolicy.PasswordHistoryLength + " passwords set.";
throw new Exception(message, ex);
}
}
私がいる問題は、この行...
userEntry.Invoke("ChangePassword", new Object[] { oldPassword, newPassword });
がエラーを与えるということです...
System.Runtime.InteropServices.COMException(0x80070056) : 指定されたネットワークパスワードが正しくありません。
ユーザーは「現在のパスワード」テキストボックスにパスワードを入力したときにエラーが発生しますが、現在のパスワードと一致しません。
私は
if (txtConfirmNewPassword.Text != user.Password)
{
SetChangePasswordMessage("Password entered was wrong");
}
が、私は何を読んでから..行うことでこれを処理しようとしましたが、ユーザーのADのパスワードを取得することはできません。
これをキャッチすることなく正常に処理できますか?
資格情報を最初に検証したら、これが成功するとパスワード変更が実行されます。 – Equalsk
それはまさにそれです!私はあなたのアドバイスを手に入れました。ありがとうございました – MadDev