Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件系统权限问题(C#)_C#_Filesystems_Console Application_Rights - Fatal编程技术网

文件系统权限问题(C#)

文件系统权限问题(C#),c#,filesystems,console-application,rights,C#,Filesystems,Console Application,Rights,我对文件系统和权限/权限访问(又称访问控制列表,ACL)相当陌生。在编写有关ACL的代码时,我无法设置文件的属性。我不确定我对FileSystemRights成员的理解是错误的,还是我完全做了错事。(我已经在这方面花了不少时间) 我想做的是更改文件的权限,这样它只能是纯可读的,不能在别处编辑、重命名、删除和复制 以MSDN为例,以下是我到目前为止的情况: try { //Get current identity WindowsIdentity self = System.Secu

我对文件系统和权限/权限访问(又称访问控制列表,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将导致文件无法读取)
  • 添加拒绝写入权限
  • 添加允许读取和执行权限
  • 删除ReadAndExecute上的拒绝条目(As.Modify拒绝ReadAndExecute)
  • 删除读取时的拒绝条目(As.Modify拒绝读取)

  • 这部分我做对了吗?如果没有,请告知我应该怎么做,使文件只可读,不可编辑,不可重命名,不可删除和复制。非常感谢

    请解释它做错了什么。我唯一看到的问题是,您正在为自己设置权限,而不是为其他用户或组设置权限。也许您应该遍历所有组(管理员、用户等),并禁用除读取和执行之外的所有组。虽然我认为系统总是能完全控制所有文件。

    只要文件可读,它就永远是可复制的!那么,是否有可能(任何一种解决方法)使其可读,但又防止它被复制到其他地方?不-任何可读的东西都是可复制的…比如说,我刚刚将文件属性设置为“只读”,那么该文件是否可以在其他计算机上复制、编辑和删除?只要它是可读的,它就是可复制的。。。反过来,通过复制,一切都可以完成(编辑,删除…)对不起,我忘了提到这个应用程序的使用。它应该驻留在thumbdrive中,该驱动器将分发给不同的用户。这就是“self.Name”用来获取他们的计算机域\用户的地方。thumbdrive中有文件,它们应该是可读的,因此我不得不禁止复制、编辑和删除功能——也就是说,thumbdrive中没有任何内容可以更改,只能读取文件。