0

我正在尝试使用 UserPrincipal 更改 Active Directory 中的用户帐户属性。

我已经读到我们必须使用对 Active Directory 具有写访问权限的特殊帐户,而不是当前登录用户。所以,我创建了一个特殊的类来使用特殊帐户来模拟。但我仍然有

System.UnauthorizedAccessException: General access denied error

在 user.Save(ctx); 线。

System.Security.Principal.WindowsImpersonationContext newUser = clsImpersonate.ImpersonateUser("ADUser", "ADPassword");

            if (newUser != null)
            {
                PrincipalContext ctx = blAD.GetAdminPrincipalContext();
                UserPrincipal user = blAD.GetUserPrincipal(this.SAMAccount);
                user.Enabled = false;
                user.Save(ctx);
                newUser.Undo();
            }

我怎样才能达到这个要求?谢谢。

4

3 回答 3

0

要以其他用户身份访问 Principal,请使用用户的凭据定义您的 PrincipalContext,并在获取 UserPrincipal 时使用该 PrincipalContext。

    PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "domain.tld", "ADUser", "ADPassword");
    UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, this.SAMAccount);
    if (user != null) 
    {
        user.Enabled = false;
        user.Save();
    }

如果您仍然收到 UnauthorizedAccess 异常,可能是因为您指定的帐户无权在 Active Directory/LDS 中的用户对象上写入 userAccountControl 属性。

于 2014-09-26T14:43:45.247 回答
0

哪些权限已委派给您的特殊用户?它需要能够写userAccountControl在有问题的用户身上。

于 2012-04-24T15:00:48.267 回答
0

我不会先冒充帐户!首先通过广告传递值来获得访问权限。

对于真正的问题,请查看错误:

  1. 获取 principalContect。
  2. 获取用户主体。
  3. 做你想做的事。
  4. 保存它,你为什么使用撤消?删除撤消()。
于 2013-10-07T15:07:20.177 回答