Windows文件安全性,删除访问规则

时间:2009-11-03 19:02:17

标签: c# windows-security directory-security

我有以下代码,应删除用户对某个文件夹的访问权限。不幸的是它没有(访问规则仍然存在)。没有例外。

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 个答案:

答案 0 :(得分:4)

看看DirectorySecurity课程上的SetAccessRuleProtection,阅读它......我认为你需要......

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

玩弄它。