5

クライアントがサーバー マシンにログインする ASP.NET で Web アプリの関数を作成しています。これは、サーバー上のローカル ユーザーに対して Windows 認証されています。私が書いている関数は、ユーザーのパスワードをリセットし、新しいパスワードをメールで送信します。私はこれを次のようにします:

String userPath = "WinNT://"  + Environment.MachineName + "/" + username.Text;
DirectoryEntry de = new DirectoryEntry(userPath);
de.Invoke("SetPassword", new object[] { password });

フラグをチェックして、次回ユーザーがメールで送信されたパスワードでログインしたときにパスワードを変更するように強制するにはどうすればよいですか? pwdLastSet を次のように使用してみました:

de.Properties["pwdLastSet"].Value = 0;

しかし、これは明らかにWinNTではなくLDAPでのみ機能し、私はこれをローカルで行っています。

私よりもよく知っている専門家はいますか?プロセスを作成できるように、コマンドラインからこれを行う方法を探してみましたが、その方法を見つけることもできませんでした。

4

1 に答える 1

7

WinNT の場合、値を 0 ではなく 1 に設定する必要があり、プロパティ名は「pwdLastSet」ではなく「PasswordExpired」です。http://msdn.microsoft.com/en-us/library/aa746542(VS.85).aspxを参照してください。

つまり、WinNT では次のようにします。

de.Properties["PasswordExpired"].Value = 1;

(紛らわしいのはわかっていますが、LDAP の場合は、プロパティ "pwdLastSet" を 0 に設定する必要があります。これで矛盾が発生することはありません!)

于 2010-10-07T23:51:53.473 に答える