查找锁定文件的命令行工具

71

我想知道谁锁定了一个文件(win32)。我知道 WhoLockMe,但是我想要一个命令行工具,它能做更多或者同样的事情。

我也看过这个问题,但貌似只适用于远程打开的文件。

7个回答

102

Handle 能够帮你解决问题。

曾想知道哪个程序正在打开某个文件或目录吗?现在你可以找到答案了。Handle 是一款实用工具,它能显示系统中任意进程的打开句柄信息。你可以使用它查看打开文件的程序,或者查看一个程序所有句柄的对象类型和名称。


1
很遗憾,不太行。第一次调用会打开一个窗口,需要系统上有效的COMCTL32.dll - 而这正是我机器上缺少的。所以,我没那么幸运。 - mark
12
尝试第一次运行“handle /accepteula”。这是一种在没有对话框的情况下接受最终用户许可协议(EULA)的快捷方式。 - John McCarthy
或者,您可以使用注册表来防止此对话框弹出。 有关设置注册表的详细信息,请访问以下网址:https://peter.hahndorf.eu/blog/post/2010/03/07/WorkAroundSysinternalsLicensePopups - Herbert Yu
3
Handle的GUI版本。https://technet.microsoft.com/zh-cn/sysinternals/bb896653 - Entree
1
运行“handle.exe”会返回许多文件被某个进程使用,但其中大部分我都可以在“正在使用”时删除。因此,显然 handle 并没有返回一个锁定文件的列表。 - Alex
它非常慢。 - NateS

21

1
运行“handle.exe”会返回很多文件被某个进程使用,但大多数情况下我可以在它们“正在使用”的时候删除它们。因此,显然 handle 并没有返回一个锁定文件列表。 - Alex

13

下载 Handle 工具。

https://technet.microsoft.com/en-us/sysinternals/bb896655.aspx

如果你想查找哪个程序正在使用某个文件,需在 Handle.exe 所在的目录中运行以下命令。除非你已将 Handle.exe 添加到 PATH 环境变量中。如果文件路径为 C:\path\path\file.txt,则运行以下命令:

handle "C:\path\path\file.txt"

这将告诉您哪些进程锁定了该文件(或文件夹)。


1
执行以上代码后,结果如下:notepad.exe pid: 6828 BC8: C:\path\path\file.txt 如果您想关闭指定的句柄,请执行:handle.exe -c BC8 -p 6828。 - ionat
我建议您在StackOverflow上提出一个新问题,并提供所有细节,包括确切的命令和确切的输出。可以引用此工单。同时,请说明您的安全性(即:管理员、非管理员)。 - Entree
我可以运行“handle.exe some.dll”,在许多情况下,即使handle报告正在使用它的进程,我也可以删除some.dll。因此,显然handle不会返回锁定文件的列表。 - Alex
可执行文件没有被锁定,还是 DLL 文件没有被锁定? - Entree
handle.exe 列出可以删除的 DLL。 - Alex

2
在我的情况下,Handle.exe 没有起到帮助作用。来自官方微软的简单程序 Process Explorer 很有用。只需以管理员身份打开并按Ctrl+f,键入文件名的一部分,它将显示正在使用该文件的进程。最初的回答。

1

enter image description here

计算机管理 - 共享文件夹 - 打开的文件。

命令行工具用于查找锁定文件的用户”
那不是一个命令行工具。
- radj307

1
Handle工具未发现WhatsApp正在占用temp文件夹中的.tmp.node文件。使用ProcessExplorer - Find可以更好地找到。请参考此答案https://superuser.com/a/399660

0

我已经使用Unlocker多年了,非常喜欢它。它不仅可以识别程序并提供解锁文件夹/文件的选项,还可以允许您终止具有锁定的处理。

此外,它还提供了针对所涉及的锁定文件要执行的操作,例如删除它。

Unlocker帮助删除出现错误消息的锁定文件,包括“无法删除文件”和“拒绝访问”。视频教程可用。

一些可能需要Unlocker帮助的错误包括:

  • 无法删除文件:拒绝访问。
  • 存在共享冲突。
  • 源或目标文件可能正在使用中。
  • 该文件正在被另一个程序或用户使用。
  • 确保磁盘未满或受写保护,并且文件当前未在使用中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接