我试图使用以下代码来设置 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”这样的任意字符串,但这并不好。我尝试了很多东西都没有好的结果。
如何解决这个问题?