私はファイルシステムとパーミッション/権利アクセス (別名アクセス制御リスト、ACL) にかなり慣れていません。ACL に関するコーディング中に、必要なプロパティをファイルに設定できません。FileSystemRights メンバーの理解が間違っているのか、それとも完全に間違ったことをしているのかはわかりません。(そして、私はすでにこの部分にかなりの時間を費やしています)
私がやりたいのは、ファイルの権利を変更して、ファイルを完全に読み取り可能にし、編集、名前の変更、削除、および他の場所へのコピーができないようにすることです。
MSDN の例を使用すると、これまでのところ次のようになります。
try
{
//Get current identity
WindowsIdentity self = System.Security.Principal.WindowsIdentity.GetCurrent();
// Add the access control entry to the file.
AddFileSecurity(filename, self.Name, FileSystemRights.Modify, AccessControlType.Deny);
AddFileSecurity(filename, self.Name, FileSystemRights.Write, AccessControlType.Deny);
AddFileSecurity(filename, self.Name, FileSystemRights.ReadAndExecute, AccessControlType.Allow);
// Remove the access control entry from the file.
RemoveFileSecurity(filename, self.Name, FileSystemRights.ReadAndExecute, AccessControlType.Deny);
RemoveFileSecurity(filename, self.Name, FileSystemRights.Read, AccessControlType.Deny);
Console.WriteLine("Done.");
}
catch (Exception e)
{
Console.WriteLine(e);
}
私の論理は次のとおりです。
- 変更の拒否権を追加します (.Modify を拒否すると、ファイルが読み取れなくなります)
- 書き込み拒否権を追加
- Allow ReadAndExecute 権限を追加する
- ReadAndExecute の Deny エントリを削除します (.Modify が ReadAndExecute を拒否するため)
- 読み取り時に拒否エントリを削除します (.Modify が読み取りを拒否するように)
この部分を正しく行っていますか?そうでない場合は、ファイルを読み取り専用にし、編集、名前変更、削除、コピー不可にするにはどうすればよいかアドバイスしてください。よろしくお願いします!