编辑文件访问控制
本文关键字:访问控制 编辑文件 | 更新日期: 2023-09-27 18:12:56
嗨,我正在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的概念)。
查看本文:
http://technet.microsoft.com/en-us/library/cc783530 (WS.10) . aspx
对于FAT或FAT32卷,只能对共享文件夹设置权限,不能对共享文件夹中的文件和文件夹设置权限。此外,FAT或FAT32卷上的共享权限只限制网络访问,不允许直接在计算机上工作的用户访问。
唯一的选择是以独占访问模式打开文件,以防止其他人在您读取时更改。
看这个问题(从生命力的评论中偷来的):
如何锁定文件
接受答案的代码:
using (FileStream fs =
File.Open("MyFile.txt", FileMode.Open, FileAccess.Read, FileShare.None))
{
// use fs
}