C# 使用UserPrincipal更改AD用户帐户属性

C# 使用UserPrincipal更改AD用户帐户属性,c#,active-directory,impersonation,userprincipal,C#,Active Directory,Impersonation,Userprincipal,我正在尝试使用UserPrincipal更改Active Directory中的用户帐户属性 PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "domain.tld", "ADUser", "ADPassword"); UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, this.SAM

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

    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();
    }
我已经了解到,我们必须使用对Active Directory具有写访问权限的特殊帐户,而不是当前登录用户。因此,我创建了一个特殊类,通过使用特殊帐户进行模拟。但我仍然有这个机会

System.UnauthorizedAccessException:拒绝一般访问错误

在用户保存时(ctx);线路


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

您的特殊用户被授予了哪些权限?它需要能够在有问题的用户上写入
userAccountControl

我不会先模拟帐户!通过先通过ad传递值获得访问权限

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

  • 取得原则性的联系
  • 获取用户主体
  • 做你想做的事
  • 保存它,为什么要使用撤消?删除撤消()

  • 要以其他用户的身份访问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属性

    如何知道您指定的帐户是否无权在Active Directory/LDS中的用户对象上写入userAccountControl属性。?