文件系统权限问题(C#)
我对文件系统和权限/权限访问(又称访问控制列表,ACL)相当陌生。在编写有关ACL的代码时,我无法设置文件的属性。我不确定我对FileSystemRights成员的理解是错误的,还是我完全做了错事。(我已经在这方面花了不少时间) 我想做的是更改文件的权限,这样它只能是纯可读的,不能在别处编辑、重命名、删除和复制 以MSDN为例,以下是我到目前为止的情况:文件系统权限问题(C#),c#,filesystems,console-application,rights,C#,Filesystems,Console Application,Rights,我对文件系统和权限/权限访问(又称访问控制列表,ACL)相当陌生。在编写有关ACL的代码时,我无法设置文件的属性。我不确定我对FileSystemRights成员的理解是错误的,还是我完全做了错事。(我已经在这方面花了不少时间) 我想做的是更改文件的权限,这样它只能是纯可读的,不能在别处编辑、重命名、删除和复制 以MSDN为例,以下是我到目前为止的情况: try { //Get current identity WindowsIdentity self = System.Secu
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);
}
我的逻辑是:
这部分我做对了吗?如果没有,请告知我应该怎么做,使文件只可读,不可编辑,不可重命名,不可删除和复制。非常感谢 请解释它做错了什么。我唯一看到的问题是,您正在为自己设置权限,而不是为其他用户或组设置权限。也许您应该遍历所有组(管理员、用户等),并禁用除读取和执行之外的所有组。虽然我认为系统总是能完全控制所有文件。只要文件可读,它就永远是可复制的!那么,是否有可能(任何一种解决方法)使其可读,但又防止它被复制到其他地方?不-任何可读的东西都是可复制的…比如说,我刚刚将文件属性设置为“只读”,那么该文件是否可以在其他计算机上复制、编辑和删除?只要它是可读的,它就是可复制的。。。反过来,通过复制,一切都可以完成(编辑,删除…)对不起,我忘了提到这个应用程序的使用。它应该驻留在thumbdrive中,该驱动器将分发给不同的用户。这就是“self.Name”用来获取他们的计算机域\用户的地方。thumbdrive中有文件,它们应该是可读的,因此我不得不禁止复制、编辑和删除功能——也就是说,thumbdrive中没有任何内容可以更改,只能读取文件。