2012-04-24 3 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. 저장하십시오. 왜 Undo를 사용하고 있습니까? 실행 취소()를 삭제하십시오.
0

다른 사용자로 Principle에 액세스하려면 사용자의 자격 증명으로 PrincipalContext를 정의하고 UserPrincipal을 가져올 때 해당 PrincipalContext를 사용하십시오. 여전히 UnauthorizedAccess 예외를 받고하는 경우가 지정하는 계정을 Active Directory/LDS의 사용자 개체의 userAccountControl 특성을 쓸 수있는 권한이 없기 때문에

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(); 
    } 

, 그것은 가능성이 높습니다.