C# - 阻止文件夹在处理时被更改

标签 c# .net

我有一个单线程程序来处理源目录中的文件夹和文件。有没有办法阻止我的源目录中包含文件的文件夹在我的程序运行时被其他进程修改?我正在考虑在文件夹本身上放置某种独占锁,这样只有我的程序进程才能使用它。

注意:

我不想阻止根源目录本身,只是阻止该目录顶层的任何文件夹,我可能会在任何特定时刻处理。我仍然希望能够在处理其他文件夹时允许外部进程将文件夹添加到源目录。

更新:

@Yuri - 是的,这是一个 Windows 程序,准确地说是一个 Windows 服务应用程序。

使这既具有挑战性又是必要的部分原因是我需要在源目录中的单独目标目录中重新创建我正在处理的任何文件夹的结构。因此,当我的程序正在处理文件夹和文件时,我不能让任何其他进程修改它们。

最佳答案

锁定文件夹的方法:

1.将其标记为只读。 (包含在内是因为人们总是尝试这样做)
缺点 - 这实际上不起作用。在文件夹上,只读标志用于其他目的。

2.将所有内容标记为只读。
缺点 - 不会阻止某些类型的操作(例如,创建新项目)。

3.使用ACL
缺点 - 不会阻止管理员弄乱文件夹。需要某些类型的权限。

4.使用专门创建的用户的ACL并启用文件夹加密。
缺点 - 这真是太可怕了。如果出现任何问题,您的数据可能会丢失。

5.重命名/移动文件夹
缺点 - 可以被愚蠢的用户绕过。

6.(编辑) gjvdkamp 的回答:Lock Individual files
缺点 - 与 #2 一样,这仍然允许在文件夹中 创建新文件。也就是说,这是The Right Way™ 的做法。

关于C# - 阻止文件夹在处理时被更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4692981/

相关文章:

c# - 哪里返回错误记录

c# - Console Application 输入参数-字符串识别

c# - 是否可以从 TPL Task 派生以从方法返回更多详细信息?

c# - 在 C# 中如何确定进程的所有者?

.net - Linq后期处理行为

c# - 数据适配器和数据读取器有什么区别?

c# - 是否可以使抽象方法的参数列表具有可覆盖的长度和类型?

c# - Newtonsoft.Json.JsonConvert.DeserializeObject 转换为 Newtonsoft.Json.Linq.JObject 问题

c# - 最轻量级的 .NET 集合

c# - 在表单标记中设置操作会生成错误 "Validation of viewstate MAC failed..."