我对文件系统和权限/权限访问(又名访问控制列表,ACL)相当陌生。在对ACL进行编码时,我无法设置我想要的文件属性。我不确定我对FileSystemRights成员的理解是错误的,还是我完全做错了事情。 (而且我已经花费了相当多的时间在这部分上了)FileSystemRights问题(C#)
我想要做的是更改文件的权限,以便它只能被强制读取并且不能被编辑,重命名,删除和复制到别处。
使用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将导致文件变得不可读)
- 添加拒绝写入权限
- 添加允许ReadAndExecute权利
- 删除拒绝入境在ReadAndExecute(如.Modify否认ReadAndExecute)
- 删除拒绝上读条目(如.Modify否认读)
我是否正确做这个部分?如果没有,请告诉我应该怎么做才能使文件只能读取,而不是可编辑,可修改,可删除和可复制。提前谢谢了!
只要该文件是可读的,它将永远是可复制的! – Yahia
是否可以(任何类型的解决方法)使其可读,但防止将其复制到别处? –
否 - 任何可读的内容都是可复制的... – Yahia