使用文件识别进程

时间:2008-12-18 23:24:49

标签: windows winapi wmi

我一直在试图弄清楚如何以编程方式识别锁定特定文件的进程。我搜索过Win32 API和WMI,但到目前为止我找不到任何东西。我知道这是可能的 - Sysinternals能够列出系统上每个进程访问/锁定的每个资源。

有人可以给我一些提示吗?

7 个答案:

答案 0 :(得分:16)

您可以使用handle.exe from Sysinternals

类似的东西:

> handle /accepteula C:\path\to\directory
...
program.exe           pid: 1234   type: File           2E4: C:\path\to\directory
...

感谢https://stackoverflow.com/a/599268/367916

答案 1 :(得分:4)

如果您可以限制自己使用足够新版本的Windows,则重启管理器可以告诉您which process has a particular file open

答案 2 :(得分:3)

您可以使用Microsoft的Process Explorer

  1. 下载&打开包装运行 Process Explorer
  2. 点击查找菜单,然后点击查找句柄或DLL ... 或按 CTRL + F
  3. 将路径复制并粘贴到文件的锁定文件夹
  4. 点击搜索,您可以从主 Process Explorer 窗口中删除流程

答案 3 :(得分:2)

由于Process Explorer的工作方式,我怀疑你需要寻找的是一种查找附加到给定进程的文件句柄的方法,并且你必须为系统中的每个进程提取该列表并在其中查找您的文件。

答案 4 :(得分:0)

我不知道在Windows中,但有人可能会发现有用的知道,在Linux中,您可以使用 lsof 命令,或只搜索文件夹/ p​​roc / PROCESS_ID / fd和看看哪个进程打开了文件。

答案 5 :(得分:0)

WhoLockMe是一个很好的右键单击Windows资源管理器扩展。

答案 6 :(得分:0)

article可能对您有所帮助。

您似乎被迫使用ntdll.dll中未记录的函数搜索系统上每个进程的文件列表。