2012-09-04 82 views
4

我在遠程服務器上有一個widows文件夾,我想從中刪除特定用戶的權限。我試過很多方法,似乎沒有任何工作。刪除Windows文件夾的權限

我沒有得到以下代碼的錯誤,但權限保持不變。我沒有使用正確的對象或錯過了這些對象的某個步驟?任何援助將不勝感激。

dirName作爲共享傳遞,例如, \ myserver \ myfolder

private void removePermissions(string dirName, string username) 
    { 
     string user = System.Environment.UserDomainName + "\\" + username; 
     DirectoryInfo dirinfo = new DirectoryInfo(dirName); 
     DirectorySecurity dsec = dirinfo.GetAccessControl(AccessControlSections.All); 

     AuthorizationRuleCollection rules = dsec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)); 
     foreach (AccessRule rule in rules) 
     { 
      if (rule.IdentityReference.Value == user) 
      { 
       bool value; 
       dsec.PurgeAccessRules(rule.IdentityReference); 
       dsec.ModifyAccessRule(AccessControlModification.RemoveAll, rule, out value); 
       MessageBox.Show("Removed permission from " + dirName + " for " + user); 
      } 
     } 
    } 
+0

您是否正在使用提升(以管理員身份運行)權限執行您的應用程序? –

+0

是的 - 我是執行的域管理員。我可以通過代碼添加儘可能多的權限,但無法刪除任何通過代碼。 – cymorg

回答

5

創建新的ACL後,您需要將其應用於該文件夾。

添加

dirinfo.SetAccessControl(dsec); 

在循環之後。

+0

糟糕,以前的評論太快了。這完美的訣竅。感謝Richard。 – cymorg

+0

這不是一個竅門。 –

+3

@ChibuezeOpata:在英國/國際英語中,「我的伎倆」這個短語並不意味着我以美國英語收集它的方式會有欺騙或不當行爲。 「這個訣竅」是一個常見的表達,意思就是「有效」。 –

相關問題