C#:编辑文件访问控制

C#:编辑文件访问控制,c#,security,access-control,C#,Security,Access Control,您好,我正在从事c#项目,我尝试使用该代码锁定文件,防止其被打开、复制甚至删除: FileInfo fi = new FileInfo(textBox1.Text); FileSecurity ds = fi.GetAccessControl(); ds.AddAccessRule(new FileSystemAccessRule("Authenticated Users", FileSystemRights.FullControl, A

您好,我正在从事c#项目,我尝试使用该代码锁定文件,防止其被打开、复制甚至删除:

FileInfo fi = new FileInfo(textBox1.Text);
            FileSecurity ds = fi.GetAccessControl();
            ds.AddAccessRule(new FileSystemAccessRule("Authenticated Users",      FileSystemRights.FullControl, AccessControlType.Deny));
            fi.SetAccessControl(ds);
但是当我打开文件时,它被打开并且可以删除,我的代码有什么错误吗


顺便说一句,该代码在除闪存驱动器以外的任何地方都能正常工作,我可以阻止编辑或复制计算机上的文件,但在闪存驱动器上应用程序是无用的。

您的闪存驱动器有什么文件系统?我猜是FAT32,而不是NTFS

FAT32没有每文件ACL的概念(或者据我所知,没有ACL的概念)

见本文:

在FAT或FAT32卷上,您可以设置共享文件夹的权限,但不能设置共享文件夹中的文件和文件夹的权限。此外,FAT或FAT32卷上的共享权限仅限制网络访问,而不限制直接在计算机上工作的用户的访问

唯一的选择是以独占访问模式打开文件,以防止其他人在您读取文件时对其进行更改

见此问题(摘自维塔利的评论):

已接受答案中的代码:

using (FileStream fs = 
       File.Open("MyFile.txt", FileMode.Open, FileAccess.Read, FileShare.None))
{
    // use fs
}

也许这是你问题的答案-正确,它很胖,我把它改成NTFS,它工作得很好,谢谢