我最喜欢的 Linux 工具之一是 拉索夫 - 真正的瑞士军刀!

今天我发现自己想知道 WinXP 系统上的哪些程序打开了特定的文件。有没有与 lsof 等效的实用程序?此外,有问题的文件是通过网络共享进行的,因此我不确定这是否会使问题变得复杂。

有帮助吗?

解决方案

使用 流程浏览器 从 Sysinternals Suite 中,查找句柄或 DLL 功能可让您搜索打开该文件的进程。

其他提示

相当于 lsof -p pid 是 sysinternals 句柄和 listdll 的组合输出,即

handle -p pid
listdlls -p pid

你可以用 sysinternals 找到 pid pslist.

尝试 处理. 菲勒蒙 & 雷蒙 也非常适合尝试找出 duce 程序 foo 对您的系统做了什么。

相当于一 拉索夫 可以合并 Sysinternals 的输出 处理列表DLL, , IE。:

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

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

列表DLL处理 不产生连续的表格形式,因此过滤文件名会隐藏 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 是打开该文件的。

尝试 解锁器.

Unlocker 网站有一个漂亮的图表(点击链接后向下滚动),显示了与其他工具的比较。显然,这种比较通常是有偏见的,因为它们通常是由工具作者编写的,但该图表至少列出了替代方案,以便您可以自己尝试。

如果文件是 .dll 那么您可以使用 任务列表 命令行应用程序查看谁打开了它:

TaskList /M nameof.dll

如果右键单击“计算机”(或“我的电脑”)图标并从弹出菜单中选择“管理”,则会进入计算机管理控制台。

在其中的“系统工具\共享文件夹”下,您将找到“打开文件”。这可能接近您想要的,但如果文件位于网络共享上,那么您需要在文件所在的服务器上执行相同的操作。

有一个程序“OpenFiles”,似乎是Windows 7的一部分。似乎它可以做你想做的事。它可以列出由远程用户打开的文件(通过文件共享),在调用“ OpenFiles /local on”并重新启动系统后,它应该能够在本地显示打开的文件。据说后者会造成性能损失。

使用 Process Explorer 查找进程 ID。然后使用 处理 找出哪些文件被打开。

例如句柄-p

我喜欢这种方法,因为您使用的是 Microsoft 本身的实用程序。

打开的文件视图, ,在“选项”菜单下,有一个名为“显示网络文件”的菜单项。也许启用该功能后,上述实用程序会有一些用处。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top