检查用户是否存在ou

时间:2009-12-27 13:42:56

标签: c# active-directory ou

我想检查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传递。

请帮忙。

感谢。

1 个答案:

答案 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 );        
         }
    }
}