使用文件识别进程

我一直在试图找出如何以编程方式识别对特定文件具有locking的进程。 我已经通过Win32 API和WMI进行了search,但到目前为止我找不到任何东西。 我知道这是可能的 – Sysinternals能够列出系统上每个进程访问/locking的每个资源。

任何人都可以给我一个提示吗?

Solutions Collecting From Web of "使用文件识别进程"

你可以使用Sysinternals的handle.exe 。

就像是:

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

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

如果您可以限制自己的Windows的新版本,重新启动管理器可以告诉你哪个进程打开一个特定的文件 。

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

您可以使用Microsoft的Process Explorer

  1. 下载并解压缩并运行Process Explorer
  2. 单击查找菜单,然后单击查找句柄或DLL …或按Ctrl + F
  3. 将路径复制并粘贴到文件的锁定文件夹
  4. 单击搜索 ,可以从主进程资源管理器窗口中终止进程

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

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

本文可能对您有所帮助。

看来你不得不在ntdll.dll中使用未公开的函数搜索系统上每个进程的文件列表。