1

我想检查所选用户是否存在于 OU 中(通过他/她登录的用户名),完成此操作的最正确方法是什么?之后,我想选择用户并更改他/她的密码。

我在这里找到了一些帮助:http: //www.codeproject.com/KB/system/everythingInAD.aspx#46

但是我发现的代码是这样的:

公共静态布尔存在(字符串对象路径)
{
    布尔发现=假;
    if (DirectoryEntry.Exists("LDAP://" + objectPath))
    {
        找到=真;
    }
    发现退货;
}

可以概括为:

返回 DirectoryEntry.Exists("LDAP://" + objectPath);

所以我真的不知道在这里信任谁,如果我只有一个用户名和 OU 名称以及一个域名,我应该作为 objectPath 传递什么。

请帮忙。

谢谢。

4

1 回答 1

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 );        
         }
    }
}
于 2009-12-27T13:52:40.117 回答