4

一部のフォルダーのアクセス許可 (読み取り専用に設定) を ReadWriteExecute に変更したい!

このコードを書きましたが、フォルダーのアクセス許可はまだ読み取り専用です。

private void ChangePermissions(string folder)
{
    string userName = Environment.UserName;

    FileSystemAccessRule accessRule = new FileSystemAccessRule(userName, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit 
                | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow);

    DirectoryInfo directoryInfo = new DirectoryInfo(folder);
    DirectorySecurity directorySec = directoryInfo.GetAccessControl();


    directorySec.AddAccessRule(accessRule);
    directoryInfo.SetAccessControl(directorySec);
}

このディレクトリを削除したい場合、次のDirectory.Delete(folder, true)エラー メッセージが表示されます。

「パス 'エントリ' へのアクセスが拒否されました。」

もちろん、アクセス許可はまだ読み取り専用です!

ここで何が問題なのですか?

4

1 に答える 1

2

次のようなことを試すことができます:

var dirInfo = new DirectoryInfo(folder);
dirInfo.Attributes &= ~FileAttributes.ReadOnly;

これは、ビットごとの論理 AND 演算子(&=)を使用して、既存の Attributes プロパティに逆を追加します(ビットごとの NOTでFileAttributes.ReadOnlyあるため)。~

于 2012-04-16T13:48:40.120 に答える