如何确定 Windows 中进程正在锁定/读取/写入哪些文件?

如何确定 Windows 中进程正在锁定/读取/写入哪些文件?
  1. 在 Windows 中,如果我想检查哪个进程正在使用某个文件,我可以使用 Process Hacker 等程序及其搜索功能来输入该文件的名称。

    从它提供的信息中,我知道一个进程正在对该文件执行某些操作,但我不知道它是否锁定了该文件,或者只是读取或写入该文件。我如何获取这些信息?

  2. 更重要的是,相反的情况呢?我想找到被进程锁定或写入或读取的文件的名称。

    我该怎么做?

在下面的屏幕截图中,您可以看到从文件名中找到进程名称是多么容易,但是如何找到给定进程使用的文件的名称呢?

在此处输入图片描述

在这个例子中,我使用 Acrobat 打开了一个名为的 PDF 文件eemeir.pdf,但是它没有在 Acrobat 进程树中列出。

与Process Explorer相同:

在此处输入图片描述

PD:@user173724 建议如何使用 Process Explorer 来执行此操作,并且我还找到了如何使用 PH 来执行此操作:

我需要选择选项“查看->窗口”,然后就会出现一个非常大的信息列表。

但是它非常丑陋并且在那里找不到任何东西(Process Explorer 也是如此),它在此部分没有搜索功能。

同时右键单击“进程 -> 属性 -> 句柄”。

答案1

关于问题#2:

查找进程正在锁定或写入或读取的文件的名称

双击该进程并转到“句柄”选项卡(这不需要任何 PH 插件)。您对带有Type=“File”的行感兴趣。

关于问题1:

正如上面的答案一样,您需要找到该进程,双击它,导航到“句柄”选项卡,然后在那里找到该文件。

然后,如果你双击文件的句柄,你会看到Granted Access。例如,如果你在 Excel 上尝试此操作,对于 TTF 文件(这些是字体,Excel 显然不会修改它们),“授予访问权限”为“读取”,但对于 XSLX 文件或其他用户数据文件,则为“(写入、读取、删除)”。

答案2

微软有一个名为进程资源管理器的实用程序,它就像是强化版的任务管理器。单击列出的程序会显示所有正在访问的文件,它的搜索功能可让您查找正在访问文件的程序。

答案3

或者,您可以使用 sysinternals handle 命令(https://technet.microsoft.com/en-us/sysinternals/handle) 属于同一套件的一部分。

handle c:\windows

显示使用窗口或该目录下文件的所有进程。

在当前版本 4.1 中,如果您只对自己的进程感兴趣,则无需成为管理员用户。您仍然需要提升权限才能查看使用文件/目录的所有进程。

相关内容