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


715

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

例如,当尝试删除文件夹时,Windows报告以下内容:

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

对于文件也是如此,但是如何找出当前正在使用哪个程序或应用程序并阻止我删除文件或文件夹?



1
您的文件是视频吗?您可能会发现Windows资源管理器本身正在“使用”文件...
DisgruntledGoat 2012年

37
这如何重复?他专门问如何找出正在锁定文件的进程,而不是如何删除锁定的文件。
b1nary.atr0phy 2015年

8
我不能在此处添加内置的,更简单的答案,因为它被错误地标记为重复,也不能将其添加到其他线程,因为这仅适用于XP。但是无论如何,对于带有资源监视器的Windows版本(在搜索栏中键入它),请转到“ CPU”选项卡/“关联的句柄”,然后搜索文件或文件夹。
jontyc

我了解到Windows 10(我猜想最早是Windows 7)有一个名为Resource Monitor的程序,该程序可让您查看哪些进程正在锁定文件或文件夹:stackoverflow.com/a/24126882/470749
Ryan

Answers:


67

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
}

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

更多详细信息如何找出Windows中哪个进程锁定了文件或文件夹


12
必须首先通过openfiles /local on
mstrange '17

5
不幸的是,openfiles似乎无法在64位Windows上运行:ERROR: The target system must be running a 32 bit OS.
Thomas

1
适用于Win10 64我
迈克尔·

3
看起来您基本上可以使用openfiles /query /fo table | find /I "<path>"?在纯cmd中实现它?
mwfearnley '18

1
...如果我们愿意重新启动以启用某些功能,为什么我们不重新启动才能访问该文件夹?当“仅重新启动计算机”会更容易并且仍然需要重新启动时,我不知道如何解决OP的问题。
Nic Hartley

689

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

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

找到手柄后,可以通过查看“图像”和/或“ PID”列来识别该过程。

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

资源监视器屏幕截图


18
注意:在我的案例中,资源监视器未找到任何关联的句柄,而Process Explorer(如上所述)却找到了。
ComFreek 2014年

15
@ComFreek好吧,ProcessExplorer在许多情况下可能会更强大,但是对我来说,Resource Monitor总是发现应用程序锁定了我要处理的文件。我也更喜欢Process Explorer,因为它就在OS中。无需在某处进行额外的下载和快捷方式。
Svish 2014年

8
我在Process Explorer中找不到此文件,但是通过Resource Manager中的这些说明很容易找到它。谢谢。
Tatiana Racheva

6
@ComFreek在我的情况下,这是另一种情况:Process Explorer找不到句柄,而Resource Monitor找到。
Uwe Keim 2015年

9
+1 -这还只是正常的Windows 10
马特·英尼斯

390

有两个选择:

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

WhoLockMe-资源管理器扩展,其中添加了右键单击菜单选项

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


26
在Windows 7中,如果您尝试删除已锁定的文件,则错误消息将告诉您该进程已被锁定
Garry English

10
注意:如果您不小心,Unlocker会安装Adware。在他们的网站上:“促销功能:完全可选的Delta工具栏。”
朱利安·奈特

11
由于某种原因,@ GarryEnglish并非总是如此。我只需要使用procexp来告诉我notepad ++在文件夹上有锁。Windows 7无法告诉我罪魁祸首。
GuiSim 2014年

4
@ jpmc26号WhoLockMe不会在Windows 7上运行
ceving

3
@ GarryEnglish-正如GuiSim所言,这肯定并非总是如此,以我的经验,这种情况很少见。
dgo 2015年

196

查看Process Explorerprocexp.exe)。

从其介绍:

有没有想过哪个程序打开了特定的文件或目录?现在您可以找出答案。

要找出正在使用特定文件的进程,请按照下列步骤操作:

  1. 转到查找查找句柄或DLL ..或直接按Ctrl+ F

    在此处输入图片说明

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

    在此处输入图片说明

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

    在此处输入图片说明

  4. (可选)您甚至可以通过下部窗格(Ctrl+ L)手动关闭手柄:

    在此处输入图片说明


6
Process Hacker也可以做到。
Benoit 2012年

5
作为另一个答案中提到,手柄是从Sysinternals的一个命令行工具,也将完成这一任务。
重载

我忘了在文件夹中打开cmd过程,过程浏览器帮助我注意到了这一点。
davejal

Google员工请注意,当前版本的PE似乎不再支持Close Handle
MickyD

无法在Win10 64位1709中工作
K7AAY '18

30

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

这是一个免费的工具,可以删除您不知道的东西阻止的文件。LockHunter对于抵御恶意软件和其他无原因阻止文件的程序很有用。与其他类似工具不同,它会将文件删除到回收站中,因此如果误删除文件,则可以将其还原。

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

5
前两个答案对我无效,下一个被拒绝的答案要么被我的防火墙阻止,要么被警告不要被我的Chrome浏览器访问!LockHunter运作良好。
user3885927 '16

1
运气猎人为我工作,而其他人没有为我服务
SheldonH 2016年

这个作品。
jdhao

10

EMCO UnlockIT可以识别锁定文件的过程以及解锁文件的过程,以便您可以删除/编辑/移动它。该程序是完全免费的,尽管新版本比原始版本(后者具有纯净的,没有皮肤的GUI,但几乎立即加载且没有烦人的启动屏幕)要慢一些,而且more肿得多。而且,原始版本用于在触发您提到的错误时自动弹出,使您可以立即解锁文件并执行尝试的操作。

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


@John:好的,它确实可以识别已锁定文件的程序。而且,您仍然可以通过任务管理器手动终止该进程。但是,通常只解锁文件(特别是在大多数时候它是资源管理器锁定了文件的情况下)而不是取消杀死锁定了该文件的进程(通常是由于访问了该文件并使文件处理程序处于打开状态)比较简单。由于程序故障)。
冒犯君主

2

这是我的发现与解决方案。

顺便说一句,以上答案都不能解决我的问题。

我什至尝试使用UNLOCKER,事实证明它毫无价值。

我的问题是Memeo自动同步备份

显然,此备份过程留下了足够的“类似文件的鬼影”。每当我按Alt-Tab击我的计算机(Windows Professional XP)时,都会出现此“鬼文件”,即,当我在任务栏上只有一个可见文件时,将看到运行两个MS Excel程序。

当我以为是SYMANTEC Endpoint(防病毒)保护时,便遇到了这种解决方案。并禁用了该程序。但是,我一直收到错误消息:

无法删除(LARGE.xls文件):它正在由另一个人或程序使用。关闭任何可能正在使用此文件的程序,然后重试。

随后,我一直看到Memeo通知“正在同步”并退出程序。

随后,没有错误。

对您来说,这可能是这些背景保存中的任何一项。


2

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


1
这仅适用于共享文件夹。
sweetfa

1

另一种可能性,只是为了节省人们我刚刚度过的时间:

在较旧版本的Windows中,您可能会收到“访问被拒绝-您可能没有权限,或者该文件可能正在使用中”。如果您通过Process Explorer发现文件实际上没有被任何人打开,则很可能是安全性问题。使用管理员帐户,在资源管理器中选择文件,右键单击并选择“属性”,“安全性”,“高级”,“所有者”。奇怪的是,这些文件由一个不再存在或无法再被验证存在的帐户拥有(由于更改了Active Directory信任设置)。

将所有权更改为管理员,您就可以开始了。


0

这里的许多程序已经过时了。最后,我最终使用了nirsoft的OpenedFilesView,它运行得非常好。

屏幕截图

尽管最好的部分是资源管理器菜单集成,但易于启用。根据网站

资源管理器上下文菜单

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

上下文菜单

该工具在2019年仍然可以正常使用

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.