C# : edit file access control
您好,我正在处理 c# 项目,我尝试使用该代码锁定文件,使其不被打开、复制甚至删除:
1 2 3 4 |
但是当我打开文件时,它被打开并且可以删除,我的代码有什么问题吗?
顺便说一句,该代码在除闪存驱动器之外的任何地方都可以完美运行,我可以阻止从计算机编辑或复制文件,但在闪存驱动器上该应用程序是无用的。
你的闪存驱动器有什么文件系统?我猜是 FAT32,而不是 NTFS。
FAT32 没有每个文件 ACL 的概念(或者据我所知,没有任何 ACL 的概念)。
见这篇文章:
http://technet.microsoft.com/en-us/library/cc783530(WS.10).aspx
On a FAT or FAT32 volume, you can set permissions for shared folders but not for files and folders within a shared folder. Moreover, share permissions on a FAT or FAT32 volume restrict network access only, not access by users working directly on the computer.
唯一的选择是以独占访问模式打开文件,以防止其他人在您阅读时更改它。
看到这个问题(从 Vitaliy 的评论中偷来的):
如何锁定文件
已接受答案的代码:
1 2 3 4 5 | using (FileStream fs = File.Open("MyFile.txt", FileMode.Open, FileAccess.Read, FileShare.None)) { // use fs } |