防止用户删除,移动或重命名文件

Bla*_*nix 13 c# move file-rename delete-file

我想要做的是当我的程序使用文件时,我想让用户不要重命名,删除或移动文件(好吧......根据Windows,移动是删除和创建在不同的位置)FileSystemWatcher,但我离题了).

有人建议我使用FileStream.Lock或使用互斥锁.但是,FileStream.Lock似乎只是为了防止文件被修改,我试图允许.此外,我不确定互斥锁是否可以锁定文件,尽管我仍然在.Net 4.0库中阅读它.

有没有人有任何建议使用任何一个,如果有一个基于代码的解决方案来解决这个问题?

Joh*_*ner 21

打开文件时,可以指定共享模式.

打开文件,FileAccess.Read使您能够读取文件的能力,同时FileShare.ReadWrite允许文件继续进行编辑,但不能删除或移动.

var fs = File.Open(@"C:\temp\file.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
MessageBox.Show("File Locked");  // While the messagebox is up, try to open or delete the file.
// Do your work here
fs.Close();
Run Code Online (Sandbox Code Playgroud)