2012-04-24 11 views
0

UserPrincipalを使用してActive Directory内のユーザーアカウントプロパティを変更しようとしています。UserPrincipalを使用してADユーザーアカウントプロパティを変更する

私は、現在のログオンユーザーではなくActive Directoryへの書き込みアクセス権を持つ特別なアカウントを使用する必要があることを読んでいます。そこで、私は特別アカウントを使って偽装する特別クラスを作成しました。しかし、私はまだuser.Save(CTX)で

System.UnauthorizedAccessException: General access denied error

を持っています。ライン。

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

Principleに別のユーザーとしてアクセスするには、ユーザーの資格情報で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属性を記述するためのアクセス権を持っていないので、それはそうです。

関連する問題