2009-11-03 59 views
2

我有以下代碼,應刪除用戶從某個文件夾的訪問。不幸的是,它沒有(訪問規則保持原樣)。沒有例外被拋出。Windows文件安全性,刪除訪問規則

AuthorizationRuleCollection arc = ds.GetAccessRules(true, true, typeof(NTAccount)); 

foreach (FileSystemAccessRule ar in arc) 
{ 
    if (ar.IdentityReference is NTAccount) 
    { 
     NTAccount account = ar.IdentityReference as NTAccount; 

     if (!AdminUsers.Contains(account.Value) && 
      ownerAccount != account.Value) 
     { 
      ds.RemoveAccessRule(ar); 
      WriteLog("Removed rule for: " + account); 
     } 

    } 
} 

outputDirectory.SetAccessControl(ds); 

我可以從我的日誌中看到RemoveAccessRule被調用。爲什麼規則不去?

編輯:該規則是一個繼承的規則。我需要做些不同的事情來刪除繼承的規則嗎?

+1

是否有一個父文件夾正在執行您試圖刪除的規則? – 2009-11-03 19:07:23

+0

這是繼承,如果這就是你的意思... – 2009-11-03 19:11:01

回答

4

看看SetAccessRuleProtectionDirectorySecurity類,從閱讀it..I會認爲你需要..各地

ds.RemoveAccessRule(ar); 
ds.SetAccessRuleProtection(true,false); 

發揮它。

+0

我確實相信這是它。這很棒,非常感謝。 – 2009-11-03 20:39:49