次のコードを取得しようとしていますが、問題がある場合もあります。 失敗した場合、0x800704F1というエラーが表示されます。「システムは認証要求を処理するドメインコントローラに接続できません」 失敗した時間の約90%を言います。 私は悲しいことにこれを助けてくれなかったコンテキストタイプの後ろにそれを追加して静的なDCを与えようとしました。 adminユーザーでは、それは常に動作します..しかし、私はユーザーが自分のパスワードを変更できると思われると思います。 user.changepassword行でエラーが発生しましたC#Change AD password Directoryservices
他の誰かが明るいアイデアを持っていれば幸いです。
using (var context = new PrincipalContext(ContextType.Domain))
{
using (var user = UserPrincipal.Current)
{
try
{
user.ChangePassword(txt_old.Text, txt_new.Text);
user.Save();
}
catch(Exception p)
{
if (p.HResult.Equals("0x800708C5"))//Not secure enough according to password policy
{
MessageBox.Show("Volgens het systeem is uw nieuwe wachtwoord niet veilig genoeg, voldoet het aan alle eisen?", "Niet gelukt", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
else if (p.HResult.Equals("0x80070056")) //Wrong current password
{
MessageBox.Show("U heeft een verkeerd huidig wachtwoord ingevult, probeer het nogmaals", "Verkeerd wachtwoord", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
else if (p.InnerException.ToString().Contains("0x80070775")) //Temporarly locked out.
{
MessageBox.Show("Uw account is tijdelijk vergrendeld door te veel pogingen tot in te loggen met een foutief wachtwoord. Probeer het over 15minuten nogmaals of neem contact op met de helpdesk.", "vergrendeld.", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
else
{
MessageBox.Show(System.Security.Principal.WindowsIdentity.GetCurrent().Name + Environment.NewLine + p.HResult + Environment.NewLine + p.Message);
return;
}
}
}
}
有効なUPNを使用していただきありがとうございます。 – Kage