特定应用程序打开哪些文件?


21

有没有办法列出Windows中特定进程当前打开的所有文件?

我的意思是fopenfclose通过特定过程获得的文件中包含,但从未获得过。

我尝试使用Sysinternals Process Monitor,但无法弄清楚如何列出当前打开的文件-仅在打开发生时才列出。


相关问题(对此问题有相关答案):stackoverflow.com/questions/15708/lsof-equivalent-for-windows
Anderson Green

Answers:


17

您可以尝试Sysinternals Process Explorer而不是Process Monitor。流程监控器旨在观察流程在执行过程中的行为。Process Explorer不仅可以查看进程的当前状态;它是任务管理器,但功能大约是其的10倍。

Sysinternals还有handle.exe一个命令行工具,可以告诉您进程打开了哪些文件。


29

从Sysinternals中检出Process Explorer

要查看某个进程的打开文件,请从列表中选择一个进程,然后选择“视图”->“下面板视图”->“处理”菜单选项。类型为“文件”的所有句柄都是打开的文件。

另外,查找哪个应用程序已打开文件的好方法是使用“查找”->“句柄”或“ DLL”菜单选项。只需输入您要查找的文件的名称,然后单击“搜索”以打开一个与搜索字符串匹配的文件来查找进程。


4
+1从Sysinternals的......顺便说一句,一个直接链接任何东西:live.sysinternals.com/procexp.exe
fretje

+1可解决他使用的工具所带来的问题。IMO这应该是正确的答案。如果您已经在使用并熟悉Process Explorer,则无需使用handle.exe。
BoldAsLove

5

实际上,Sysinternals的Process Explorer在处理文件句柄(而不是DLL等)时实际上是没有用的。使用Windows资源监视器,单击CPU选项卡。在“关联句柄”旁边,键入文件的名称,然后您将看到谁打开了该文件。


阅读@heavyd答案,它不是没有用的。第二部分仍然是有效的解决方案。
BoldAsLove

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.