确定文件是否已打开

sch*_*opy 7 c# file-io

有没有办法确定文件是否被任何包含未锁定文件的应用程序(如记事本)打开.

我需要检测给定文件myfile.txt何时不再在包括记事本在内的任何应用程序中打开 - 所以我不能使用具有独占访问权限的File.Open(...)来测试,因为文件没有锁定.

Ste*_*ary 7

不可以.当记事本打开文件时,它已读取整个文件,然后将其关闭.因此,操作系统中没有跟踪记事本的私有内存与磁盘上的文件的痕迹.

独占打开文件将不起作用,因为记事本没有打开文件.搜索记事本的句柄表将无法工作,因为记事本没有打开文件.

检测此问题的唯一方法是编写一个非托管DLL,将其注入每个进程以扫描其虚拟内存,搜索确切的文件内容.不建议.