我想检查OU中是否存在选定的用户(通过他/她登录的用户名),最简单的方法是什么? 之后我想选择用户并更改他/她的密码。
我在这里找到了一些帮助:http://www.codeproject.com/KB/system/everythingInAD.aspx#46
但我发现的代码看起来像这样:
public static bool Exists(string objectPath) { bool found = false; if (DirectoryEntry.Exists("LDAP://" + objectPath)) { found = true; } return found; }
可能会被解救为:
return DirectoryEntry.Exists("LDAP://" + objectPath);
所以我真的不知道在这里要信任谁,如果我拥有的是用户名和OU名称以及域名,我应该将其作为objectPath传递。
请帮忙。
感谢。
答案 0 :(得分:4)
由于用户名在域内必须是唯一的,我认为我不会过分关注OU。构建此代码可能会使您的代码更加脆弱,并使其更加复杂。如果可以,我会尝试使用新的UserPrincipal课程。
using (var context = new PrincipalContext( ContextType.Domain ))
{
using (var user = UserPrincipal.FindByIdentity( context, IdentityType.SamAccountName, userName ))
{
if (user != null)
{
user.ChangePassword( oldPassword, newPassword );
// or if you don't have the user's old password and
// do have enough privileges.
// user.SetPassword( newPassword );
}
}
}