次のコードを使用して、Active Directory のユーザー パスワードを設定しようとしていました。
using (var context = new PrincipalContext( ContextType.Domain ))
{
using (var user = UserPrincipal.FindByIdentity( context, IdentityType.SamAccountName, userName ))
{
user.SetPassword( "newpassword" );
user.ExpirePasswordNow();
}
}
コードは問題なくユーザー情報を取得しましたが、パスワードをリセットしようとすると、アクセスが拒否されました。その後、上記のコードでは操作を実行するためのセキュリティ コンテキストが提供されていないことに気付きました。それを入れる方法は?MSDN は、PrincipalContext の完全なコンストラクターを次のように提供します。
public PrincipalContext(
ContextType contextType,
string name,
string container,
string userName,
string password
)
私が見つけたすべての例から、最初の文字列がサーバー名であり、ユーザー名とパスワードも十分に明確であることが明らかになりましたが、「コンテナ」とは何でしたか. MSDN の説明は、泥のように明確でした。
「コンテキストのルートとして使用するストアのコンテナー。すべてのクエリはこのルートの下で実行され、すべての挿入はこのコンテナーに対して実行されます。」
「ABCD」のような任意の文字列を使用してみましたが、うまくいきませんでした。いろいろ試してみましたが、良い結果にはなりませんでした。
これを修正する方法は?