次のコードがあります。これにより、特定のフォルダーからユーザーのアクセスが削除されます。残念ながら、そうではありません(アクセスルールはそのままです)。例外はスローされません。
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が呼び出されたことがわかります。なぜルールがなくなっていないのですか?
編集:ルールは継承されたルールです。継承されたルールを削除するには、別のことをする必要がありますか?