Active Directoryユーザーがパスワードを更新できるようにするために、次のコードをWebアプリケーションの一部として使用しています(Active DirectoryとGmailの両方)。私はSystem.DirectoryServices.AccountManagementでC#を使用しています。C#Active Directoryを呼び出す "ChangePassword"がドメインに連絡できません
このコードは、昨日から、昨日
try
{
State.log.WriteLine("Connecting LDAP.");
string ldapPath = "LDAP://192.168.76.3";
DirectoryEntry directionEntry = new DirectoryEntry(ldapPath, domainName + "\\" + userName, currentPassword);
if (directionEntry != null)
{
DirectorySearcher search = new DirectorySearcher(directionEntry);
State.log.WriteLine("LDAP Connected, searching directory for SAMAccountName");
search.Filter = "(SAMAccountName=" + userName + ")";
SearchResult result = search.FindOne();
if (result != null)
{
State.log.WriteLine("Getting User Entry.");
DirectoryEntry userEntry = result.GetDirectoryEntry();
if (userEntry != null)
{
State.log.WriteLine("Setting Password");
if (force)
{
userEntry.Invoke("SetPassword", new[] { newPassword });
}
else
{
userEntry.Invoke("ChangePassword", new object[] { currentPassword, newPassword });
}
userEntry.CommitChanges();
State.log.WriteLine("Changes Committed to ActiveDirectory.");
}
else
{
State.log.WriteLine("Could not get user Entry...");
}
}
else
{
State.log.WriteLine("Search returned no results.");
}
}
else
{
State.log.WriteLine("Could not connect to LDAP with given username and passwd");
}
}
まで働いていた、このコードが行にします:
userEntry.Invoke("ChangePassword", new object[] { currentPassword, newPassword });
をして、次の例外スロー:
を[ 8:37:00 AM]:パスワード要件が満たされました。
[8:37:00 AM]:LDAPを接続しています。
[8時37分00秒AM]:
のにSAMAccountName
ためのLDAP接続され、検索ディレクトリ[8時37分01秒AM]:ユーザー・エントリを取得します。[8時37分01秒AM]:パスワードに設定
[8時37分01秒AM]:ジェイソンのために、Windowsのパスワードをリセットするために失敗しました。
呼び出しの対象によって例外がスローされました。
システムは、認証要求を処理するためにドメインコントローラに接続できません。後でもう一度お試しください。 (HRESULTからの例外:0x800704F1)「SetPasswordの」を使用して
「強制」オプションがまだうまく動作しますが、管理者以外のユーザーによって呼び出すことができる「のChangePassword」方法がありません。
これは非常に役に立ちます。ありがとうございます。 –