您正在使用c#项目,我尝试使用该代码锁定文件被打开,复制甚至删除:
FileInfo fi = new FileInfo(textBox1.Text);
FileSecurity ds = fi.GetAccessControl();
ds.AddAccessRule(new FileSystemAccessRule("Authenticated Users", FileSystemRights.FullControl, AccessControlType.Deny));
fi.SetAccessControl(ds);
但是当我打开文件时,它被打开并且可以被删除,我的代码有什么问题吗?
顺便说一下,除了闪存驱动器之外,该代码完全适用于任何地方,我可以阻止编辑或从计算机复制文件,但在闪存驱动器上应用程序是无用的。答案 0 :(得分:2)
您的闪存驱动器有哪些文件系统?我猜的是FAT32,而不是NTFS。
FAT32没有每个文件ACL的概念(据我所知,没有任何ACL概念)。
参见这篇文章:
http://technet.microsoft.com/en-us/library/cc783530(WS.10).aspx
在FAT或FAT32卷上,您可以设置共享文件夹的权限,但不能设置共享文件夹中的文件和文件夹的权限。此外,FAT或FAT32卷上的共享权限仅限制网络访问,而不是直接在计算机上工作的用户访问。
唯一的选择是以独占访问模式打开文件,以防止其他人在您阅读时更改 。
看到这个问题(从Vitaliy的评论中被盗):
接受答案的代码:
using (FileStream fs =
File.Open("MyFile.txt", FileMode.Open, FileAccess.Read, FileShare.None))
{
// use fs
}