我怎么能确定一个特定的文件是否是打开Windows? [关闭](How can I determ

2019-08-18 05:58发布

我最喜欢的Linux工具是lsof的 -一个真正的瑞士军刀!

今天,我发现自己想知道其中的WinXP系统上的程序有一个特殊的文件打开。 是否有任何等效实用程序LSOF? 此外,有问题的文件是在网络共享上,所以我不知道这事情复杂化。

Answer 1:

使用进程资源管理器从Sysinternals套件,查找处理或DLL功能可以让你搜索与该文件打开的进程。



Answer 2:

相当于lsof -p pid从Sysinternals的组合输出的处理和listdlls的,即

handle -p pid
listdlls -p pid

你可以找到与Sysinternals的PID pslist



Answer 3:

尝试处理 。 的Filemon和Regmon的也是伟大试图找出领袖程序foo的是做给你的系统。



Answer 4:

一个当量的lsof的可以合并从Sysinternals的手柄listdlls的 ,即,输出:

c:\SysInternals>handle
[...]
------------------------------------------------------------------------------
gvim.exe pid: 5380 FOO\alois.mahdal
   10: File  (RW-)   C:\Windows
   1C: File  (RW-)   D:\some\locked\path\OpenFile.txt
[...]

c:\SysInternals>listdlls
[...]
------------------------------------------------------------------------------
Listdlls.exe pid: 6840
Command line: listdlls

  Base        Size      Version         Path
  0x00400000  0x29000   2.25.0000.0000  D:\opt\SysinternalsSuite\Listdlls.exe
  0x76ed0000  0x180000  6.01.7601.17725  C:\Windows\SysWOW64\ntdll.dll
[...]

c:\SysInternals>listdlls

不幸的是,你必须“以管理员身份运行”,以能够使用它们。

listdlls的处理不产生连续的台状形式,以便过滤的文件名会隐藏PID。 findstr /c:pid: /c:<filename>应该让你非常接近与这两个实用程序,虽然

c:\SysinternalsSuite>handle | findstr /c:pid: /c:Driver.pm
System pid: 4 \<unable to open process>
smss.exe pid: 308 NT AUTHORITY\SYSTEM
avgrsa.exe pid: 384 NT AUTHORITY\SYSTEM
[...]
cmd.exe pid: 7140 FOO\alois.mahdal
conhost.exe pid: 1212 FOO\alois.mahdal
gvim.exe pid: 3408 FOO\alois.mahdal
  188: File  (RW-)   D:\some\locked\path\OpenFile.txt
taskmgr.exe pid: 6016 FOO\alois.mahdal
[...]

在这里,我们可以看到的gvim.exe是具有打开此文件的人。



Answer 5:

尝试解锁 。

该解锁网站有一个漂亮的图表(以下链接后向下滚动),显示了相较于其他工具。 显然,这样的比较通常偏向,因为它们通常是由工具创作者写的,但图表至少列出了备选方案,让您可以尝试一下自己。



Answer 6:

如果该文件是一个.dll那么你可以使用tasklist命令行应用程序,看看谁得到它打开:

TaskList /M nameof.dll


Answer 7:

如果你的“电脑”(或“我的电脑”)的图标上单击鼠标右键,然后从弹出菜单中选择“管理”,即会带你到计算机管理控制台。

在那里,系统工具\共享文件夹,你会发现“打开文件”。 这可能是接近你想要什么,但如果该文件是在网络共享上,那么你就需要做哪些文件所居住的服务器上的同样的事情。



Answer 8:

有一个节目“openFiles散”,似乎是Windows的一部分7.看来,它可以做你想做的。 它可以调用“openFiles散/本地的”后列出了远程用户(通过文件共享),以及打开的文件,并重新启动系统,它应该是能够证明文件的本地打开。 后者是说,有性能损失。



Answer 9:

使用Process Explorer来查找进程的ID。 然后使用手柄来找出哪些文件是开放的。

例如手柄-p

我喜欢这种方法,因为你正在使用的实用程序从微软自身。



Answer 10:

在OpenedFilesView ,在选项菜单下,有一个名为“显示网络文件”菜单项。 也许与启用,上述的效用是有些用处。



文章来源: How can I determine whether a specific file is open in Windows? [closed]