2

次のコードがあります。これにより、特定のフォルダーからユーザーのアクセスが削除されます。残念ながら、そうではありません(アクセスルールはそのままです)。例外はスローされません。

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が呼び出されたことがわかります。なぜルールがなくなっていないのですか?

編集:ルールは継承されたルールです。継承されたルールを削除するには、別のことをする必要がありますか?

4

1 に答える 1

4

それを読んでから、クラスのSetAccessRuleProtectionを見てくださいDirectorySecurity..私はあなたが必要だと思います..

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

それで遊んでください。

于 2009-11-03T19:28:58.723 に答える