2012-08-13 90 views
0

我想實現通過User和GroupPrincipals將AD用戶添加到本地計算機組,並且我認爲它會很好用和簡單。不幸的是,我繼續得到一般拒絕訪問錯誤。我可能只是不理解正確的身份驗證,但我認爲我已經設置了正確的訪問權限。這裏是被稱爲什麼代碼片段:通過AccountManagement將AD用戶添加到計算機本地組

var ctx = new PrincipalContext(ContextType.Machine, 
           Environment.MachineName, 
           ConfigurationManager.AppSettings["MyUser"], 
           ConfigurationManager.AppSettings["MyPW"]); 

     var grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "LocalGrp"); 
     var adUser = ADService.GetUserByDomainUserName(vModel.ContactId); 

     var adCtx = new PrincipalContext(ContextType.Domain, 
             "myDomain.com", 
             ConfigurationManager.AppSettings["MyUser"], 
             ConfigurationManager.AppSettings["MyPW"]) 
               ; 
     var user = UserPrincipal.FindByIdentity(adCtx, 
               IdentityType.Guid, 
               adUser.UserGuid.ToString()); 

     if (grp != null && 
      user != null) 
     { 
      if(!user.IsMemberOf(grp)) 
      { 
       grp.Members.Add(user); 
       grp.Save(); 
      } 
     } 

用戶發現,該組被發現,但是當我添加和到達grp.Save()步,我用常規訪問被拒絕治療例外。通過「MyUser」和「MyPW」打開ctx,我認爲這將允許在機器上進行組操作,因爲該帳戶是機器本地管理員組的一部分。我能不能以這種方式混合機器/域環境,還是存在一個我只是缺少的身份驗證問題?

回答

0

您是否以管理員模式運行Visual Studio?即使您的登錄名具有管理權限,但您的程序需要提升自己才能使用這些權限,前提是您未啓動該權限。

參見:

+0

我會嘗試這一點,但我也跑了一個開發服務器上,它的表現同樣的方式 - 拒絕即使身份的訪問應用程序池(以及創建上下文時使用的用戶名/密碼)是機器管理員組的一部分。 – 2012-08-13 18:49:52

相關問題