4

特定のユーザーのアクセス許可を削除したいリモート サーバーに widows フォルダーがあります。私は多くの方法を試しましたが、何もうまくいかないようです。

次のコードでエラーは発生しませんが、許可はそのままです。正しいオブジェクトを使用していないか、これらのオブジェクトでいくつかの手順が抜けていますか? どんな援助でも大歓迎です。

dirName は共有として渡されます (例: \myserver\myfolder)

private void removePermissions(string dirName, string username)
    {
        string user = System.Environment.UserDomainName + "\\" + username;
        DirectoryInfo dirinfo = new DirectoryInfo(dirName);
        DirectorySecurity dsec = dirinfo.GetAccessControl(AccessControlSections.All);

        AuthorizationRuleCollection rules = dsec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
        foreach (AccessRule rule in rules)
        {
            if (rule.IdentityReference.Value == user)
            {
                bool value;
                dsec.PurgeAccessRules(rule.IdentityReference);
                dsec.ModifyAccessRule(AccessControlModification.RemoveAll, rule, out value);
                MessageBox.Show("Removed permission from " + dirName + " for " + user);
            }
        }
    }
4

1 に答える 1

5

新しい ACL を作成したら、それをフォルダーに適用する必要があります。

追加

dirinfo.SetAccessControl(dsec);

ループの後。

于 2012-09-04T10:42:44.903 に答える