我一直在试图弄清楚如何以编程方式识别锁定特定文件的进程。我搜索过Win32 API和WMI,但到目前为止我找不到任何东西。我知道这是可能的 - Sysinternals能够列出系统上每个进程访问/锁定的每个资源。
有人可以给我一些提示吗?
答案 0 :(得分:16)
您可以使用handle.exe from Sysinternals。
类似的东西:
> handle /accepteula C:\path\to\directory
...
program.exe pid: 1234 type: File 2E4: C:\path\to\directory
...
答案 1 :(得分:4)
如果您可以限制自己使用足够新版本的Windows,则重启管理器可以告诉您which process has a particular file open。
答案 2 :(得分:3)
您可以使用Microsoft的Process Explorer
答案 3 :(得分:2)
由于Process Explorer的工作方式,我怀疑你需要寻找的是一种查找附加到给定进程的文件句柄的方法,并且你必须为系统中的每个进程提取该列表并在其中查找您的文件。
答案 4 :(得分:0)
我不知道在Windows中,但有人可能会发现有用的知道,在Linux中,您可以使用 lsof 命令,或只搜索文件夹/ proc / PROCESS_ID / fd和看看哪个进程打开了文件。
答案 5 :(得分:0)
WhoLockMe是一个很好的右键单击Windows资源管理器扩展。
答案 6 :(得分:0)
此article可能对您有所帮助。
您似乎被迫使用ntdll.dll中未记录的函数搜索系统上每个进程的文件列表。