我有以下代码,应删除用户对某个文件夹的访问权限。不幸的是它没有(访问规则仍然存在)。没有例外。
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。为什么规则不复存在?
编辑:规则是继承的规则。我是否需要做一些不同的事情来删除继承的规则?
答案 0 :(得分:4)
看看DirectorySecurity
课程上的SetAccessRuleProtection,阅读它......我认为你需要......
ds.RemoveAccessRule(ar);
ds.SetAccessRuleProtection(true,false);
玩弄它。