C# 防止用户删除、移动或重命名文件

C# 防止用户删除、移动或重命名文件,c#,move,delete-file,file-rename,C#,Move,Delete File,File Rename,我想做的是,当我的程序在使用文件时,我想阻止用户重命名、删除或移动文件(嗯……移动是指根据Windows在不同位置删除和创建文件,但我离题了) 有人建议我使用或使用。但是,FileStream.Lock似乎只是阻止修改我试图允许的文件。此外,我非常不确定互斥锁是否可以锁定文件,尽管我仍在阅读.NET4.0库中的 是否有人对使用其中任何一种方法有任何建议?如果有基于代码的解决方案,则此问题?打开文件时,可以指定共享模式 使用打开文件可以读取文件,同时允许继续编辑文件,但不允许删除或移动文件 var

我想做的是,当我的程序在使用文件时,我想阻止用户重命名、删除或移动文件(嗯……移动是指根据Windows在不同位置删除和创建文件,但我离题了)

有人建议我使用或使用。但是,FileStream.Lock似乎只是阻止修改我试图允许的文件。此外,我非常不确定互斥锁是否可以锁定文件,尽管我仍在阅读.NET4.0库中的


是否有人对使用其中任何一种方法有任何建议?如果有基于代码的解决方案,则此问题?

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

使用打开文件可以读取文件,同时允许继续编辑文件,但不允许删除或移动文件

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();

这将阻止移动或删除文件,但允许读取和写入:

    using (FileStream fs = new FileStream(@"C:\TestDir\Test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    {
        // Do Stuff.
    }

FileStream.Lock实际上是一个范围锁,它可以防止在持有锁时修改文件的特定部分。

这听起来像是一个非常不寻常的用例。我很好奇你在这种情况下是怎么发现自己的。。。你愿意进一步解释吗?也许有一个架构解决方案。哇,这甚至可以防止文件重命名。谢谢你,这会比我想象的更好,因为它甚至会抛出微软的盒子:D