2012-04-24 52 views
0

我试图通过使用UserPrincipal更改Active Directory中的用户帐户属性。使用UserPrincipal更改AD用户帐户属性

我读过,我们必须使用具有对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(); 
      } 

我该如何达到这个要求?谢谢。

回答

0

什么权限已委派给您的特殊用户?它需要能够对有问题的用户编写userAccountControl

0

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

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

  1. 获取principalContect。
  2. 获取userprincipal。
  3. 做你想做的事。
  4. 保存它,为什么你使用撤消?删除撤销()。
0

要以其他用户的身份访问原则,请使用用户的凭证定义您的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属性是可能的。

相关问题