通过特定的进程集锁定文件

时间:2014-07-03 06:56:52

标签: windows file locking

我面临的情况是,我必须允许访问同一可执行文件的多个实例的文件,但拒绝将文件访问所有其他可执行文件。

例如,如果我有一个文件foo.txt和一个可执行文件proc.exe,那么任何数量的prox.exe个实例都应该能够访问和修改foo.txt但是没有其他进程应该能够访问或修改此文件。

1 个答案:

答案 0 :(得分:0)

您无法直接根据运行进程的可执行文件执行此操作。但是,您可以使您的进程彼此协作,以便可以访问该文件的唯一进程是那些知道如何执行该进程的进程。

一种特别简单的方法是使用CreateFileMapping()为文件创建命名文件映射对象。只有知道文件映射名称的进程才能访问它。但是,您只能通过内存映射访问该文件,而不能通过普通的I / O函数访问该文件。

DuplicateHandle()提供了另一个选项,但由于重复的句柄共享一个文件对象,因此您需要非常小心地使用它。重叠I / O可能是最安全的方法,因为它明确支持对同一对象进行多个同时操作。