我有一个单线程程序来处理源目录中的文件夹和文件。有没有办法阻止我的源目录中包含文件的文件夹在我的程序运行时被其他进程修改?我正在考虑在文件夹本身上放置某种独占锁,这样只有我的程序进程才能使用它。
注意:
我不想阻止根源目录本身,只是阻止该目录顶层的任何文件夹,我可能会在任何特定时刻处理。我仍然希望能够在处理其他文件夹时允许外部进程将文件夹添加到源目录。
更新:
@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/