找出哪个进程正在锁定 Windows 中的文件或文件夹

lee*_*d00 994 windows filesystems process community-faq-proposed

如何找出哪个进程正在锁定 Windows 中的文件或文件夹?

例如,当试图删除一个文件夹时,Windows 报告如下:

无法完成操作,因为该文件夹已在另一个程序中打开

文件也会发生同样的情况,但我如何找出当前正在使用它的程序或应用程序并阻止我删除文件或文件夹?

Svi*_*ish 1109

为此,您可以使用Windows 7、8 和 10内置资源监视器

  1. 打开Resource Monitor,可以找到
    • 通过在开始菜单中搜索资源监视器resmon.exe,或
    • 作为任务管理器中性能选项卡上的按钮
  2. 转到CPU选项卡
  3. 使用搜索栏相关手柄部分
    • 请参阅下面屏幕截图中的蓝色箭头

找到句柄后,您可以通过查看图像和/或 PID 列来识别进程。

然后您可以尝试像往常一样关闭应用程序,或者,如果这不可能,只需右键单击句柄并直接从那里终止进程。十分简单!

资源监视器截图

  • 注意:在我的情况下,资源监视器没有找到任何关联的句柄,而进程资源管理器(如上所述)(http://superuser.com/a/399660/137286))找到了。 (30认同)
  • @ComFreek 好吧,ProcessExplorer 在许多情况下可能更强大,但对我来说,资源监视器总是发现应用程序锁定了我正在尝试使用的文件。我也更喜欢它而不是 Process Explorer,因为它就在操作系统中。不需要额外的下载和额外的快捷方式。 (23认同)
  • +1 - 这也适用于 Windows 10 (12认同)
  • 我在 Process Explorer 中找不到它,但是在资源管理器中使用这些说明很容易找到它。谢谢。 (10认同)
  • @ComFreek 在我的情况下,这只是另一种情况:Process Explorer 没有找到句柄,而 Resource Monitor 找到了。 (8认同)

She*_*vek 422

几个选项:

Microsoft/SysInternals Process Explorer - 转到查找 > 查找句柄或 DLL。在“句柄或 DLL 子字符串:”文本框中,键入文件的路径(例如“C:\path\to\file.txt”)并单击“搜索”。应该列出所有具有该文件打开句柄的进程。

WhoLockMe - 添加右键菜单选项的资源管理器扩展

NB WhoLockMe 似乎不适用于 Win 10(至少我无法使用 32 位或 64 位版本的 regsvr32.exe 注册它)。

  • 在 Windows 7 中,如果您尝试删除被锁定的文件,错误消息将告诉您哪个进程已被锁定 (33认同)
  • 注意:如果您不小心,Unlocker 会安装广告软件。来自他们的网站:“促销功能:完全可选的 Delta 工具栏。” (12认同)
  • @GarryEnglish 出于某种原因,情况并非总是如此。我只需要使用 procexp 来告诉我记事本 ++ 锁定了一个文件夹。Windows 7 无法告诉我罪魁祸首。 (11认同)
  • @jpmc26 不。 WhoLockMe 在 Windows 7 上不起作用。 (5认同)
  • @GarryEnglish- 正如 GuiSim 所说,情况肯定并非总是如此,根据我的经验,情况很少如此。 (3认同)
  • 应该注意的是,进程浏览器必须以管理员身份运行。以普通用户身份在 Windows 10 上运行它,但它不起作用。 (2认同)

Ero*_*oen 235

查看进程资源管理器( procexp.exe)。

从它的介绍来看:

有没有想过哪个程序打开了特定的文件或目录?现在你可以知道了。

要找出正在使用特定文件的进程,请执行以下步骤:

  1. 转到FindFind Handle 或 DLL ..或直接按Ctrl+ F

    在此处输入图片说明

  2. 输入文件名,然后按搜索

    在此处输入图片说明

  3. 进程资源管理器将列出所有具有打开文件句柄的进程。单击一个条目以在主窗口中聚焦该过程。

    在此处输入图片说明

  4. 或者,您甚至可以通过下方窗格 ( Ctrl+ L)手动关闭手柄:

    在此处输入图片说明

  • Process Hacker 也可以做到。 (8认同)
  • 正如 [another answer](http://superuser.com/a/6614/820) 提到的,[Handle](http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx) 是一个命令行来自 SysInternals 的工具也将完成此任务。 (5认同)

小智 119

PowerShell 方法:

IF((Test-Path -Path $FileOrFolderPath) -eq $false) {
    Write-Warning "File or directory does not exist."       
}
Else {
    $LockingProcess = CMD /C "openfiles /query /fo table | find /I ""$FileOrFolderPath"""
    Write-Host $LockingProcess
}
Run Code Online (Sandbox Code Playgroud)

openfiles命令需要通过运行openfiles /local on和重新启动来启用对本地文件的支持。

更多详细信息如何找出哪个进程正在锁定 Windows 存档中的文件或文件夹

  • 该功能必须首先通过 `openfiles /local on` 启用 (16认同)
  • 不幸的是,`openfiles` 似乎不适用于 64 位 Windows:`错误:目标系统必须运行 32 位操作系统。` (8认同)
  • 看起来您基本上可以在纯 cmd 中使用`openfiles /query /fo table | 实现它。找到 /I "<path>"`? (5认同)
  • ...如果我们愿意重新启动以启用某些内容,为什么我们不重新启动以访问该文件夹?我不明白这如何解决 OP 的问题,因为“只需重新启动您的机器”会更容易并且仍然需要重新启动。 (5认同)
  • @NicHartley 因为启用它可以让它下次工作。 (4认同)
  • 您可以使用类似的工具 [来自 Sysinternals 的句柄](https://docs.microsoft.com/en-us/sysinternals/downloads/handle) 代替 `openfiles`:`handle.exe -u -nobanner -accepteula "C :\FileOrFolderForWhichWeWantToFindLockingInformation"` (2认同)

Meh*_*lar 51

LockHunter可以解锁任何可能锁定您的文件或文件夹的处理程序。与类似的免费软件不同,它同时支持 32 位和 64 位 Windows。

它是一个免费工具,可以删除被您不知道的东西阻止的文件。LockHunter 可用于对抗恶意软件和其他无故阻止文件的程序。与其他类似工具不同,它会将文件删除到回收站中,因此如果误删除,您可以恢复它们。

  • 显示锁定文件或文件夹的进程
  • 允许解锁、删除、复制或重命名锁定的文件
  • 允许终止锁定进程
  • 允许从硬盘驱动器中删除锁定过程
  • 集成到资源管理器菜单中
  • 它将文件删除到回收站中,因此如果您误删了可以恢复它们
  • 支持 32 位和 64 位 Windows

  • 前两个答案对我不起作用,下一个投票的答案要么被我的防火墙阻止,要么被我的 chrome 警告不要去!LockHunter 完美运行。 (6认同)
  • @TheXenocide 显然,锁定我的文件的进程没有在安全启动中启动,这使得任何工具都变得不必要。关于俄罗斯:我只是避免使用大多数由声誉、历史和资金来源薄弱或可疑的小公司开发的闭源软件。作为俄罗斯人只是“避免”的又一滴水,而不是唯一的原因。 (2认同)

Pol*_*ear 23

Microsoft PowerToys File Locksmith实用程序完全可以满足您的要求。

  • 右键单击文件或文件夹以打开上下文菜单
  • 该实用程序打开,显示锁定进程。在那里,您可以查看哪些文件被锁定并终止特定进程

替代方案:ShowWhatProcessLocksFile

ShowWhatProcessLocksFile是File Locksmith的轻量级克隆,支持旧版本的 Windows。


Lès*_*sté 13

EMCO UnlockIT可以识别锁定文件的进程以及解锁文件,以便您可以删除/编辑/移动它。该程序是完全免费的,尽管新版本比原始版本慢一点,而且更臃肿(它有一个简单的、无皮肤的 GUI,但几乎可以立即加载并且没有烦人的闪屏)。此外,当您提到的错误被触发时,原始版本会自动弹出,让您立即解锁文件并执行您尝试的操作。

尽管如此,UnlockIT 还是一个非常有用的程序,它提供了 Windows 严重缺失的基本功能。它是我在我工作的所有 Windows 计算机上安装的实用程序的标准工具包之一。


Vij*_*jay 10

这里的很多程序已经过时了。我最终使用了 nirsoft 的OpenedFilesView,它的效果非常好。

截屏

虽然最好的部分是资源管理器菜单集成,它很容易启用。根据网站

资源管理器上下文菜单

从版本 1.10 开始,您可以直接从 Windows 资源管理器启动 OpenedFilesView,并仅查看要检查的文件或文件夹的句柄。要启用此功能,请选中“选项”菜单下的“启用资源管理器上下文菜单”。启用此功能后,您可以右键单击 Windows 资源管理器上的任何文件或文件夹,然后从菜单中选择“OpenedFilesView”项。如果您为文件夹运行 OpenedFilesView 选项,它将显示该文件夹内所有打开的文件。如果您为文件运行 OpenedFilesView 选项,它将显示该文件的所有打开的句柄。

上下文菜单

该工具在 2019 年仍然可靠运行

  • Nirsoft 免费软件一如既往的好工具! (2认同)

小智 5

如果您不知道该程序正在使用的文件,则可以转到“我的电脑”;右键点击; 选择管理。在系统工具 > 共享文件夹 > 打开文件下,您应该能够看到锁定文件的用户。您可以从这里关闭文件,然后您可以执行重命名或删除文件的任务。希望这可以帮助

  • 这仅适用于共享文件夹。 (2认同)