编辑文件访问控制

本文关键字:访问控制 编辑文件 | 更新日期: 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
}