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

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


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


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

评论

请参阅此ServerFault问题。

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

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

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

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

#1 楼

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中的文件或文件夹

评论


必须首先使用openfiles / local启用该功能

–mstrange
17年7月5日在17:02

不幸的是,openfiles似乎无法在64位Windows上运行:错误:目标系统必须运行32位OS。

– Thomas S.
17年11月2日在10:55

看起来您基本上可以使用openfiles / query / fo table在纯cmd中实现它|找到/ I“ <路径>”?

–mwfearnley
18年8月31日上午11:30

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

–莫妮卡基金的诉讼
19年6月22日在21:00

@NicHartley因为启用它会使其下次工作。

– Bill K
19-10-22在20:28

#2 楼

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


可以找到开放资源监视器


通过在开始菜单中搜索Resource Monitor或resmon.exe,或
作为任务管理器中“性能”选项卡上的按钮



转到“ CPU”选项卡
使用“关联的手柄”部分中的搜索字段


请参见下面的屏幕截图中的蓝色箭头



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

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



评论


注意:在我的情况下,资源监视器找不到任何关联的句柄,而Process Explorer(如上所述)却找到了。

– ComFreek
2014年5月6日16:57



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

–Svish
2014年5月6日21:16

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

–塔蒂亚娜·拉切娃(Tatiana Racheva)
2014年8月8日在4:30

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

– Uwe Keim
15年11月25日在13:24

+1-在Windows 10上也可以正常使用

–马特·英尼斯(Matt Innes)
16年6月1日在15:03

#3 楼

有两个选项:

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

WhoLockMe-Explorer扩展程序,其中添加了右键单击菜单选项

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

评论


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

–加里(英语)
2012-09-25 17:16

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

–朱利安·奈特(Julian Knight)
2014年3月13日21:50

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

–GuiSim
2014年7月1日在20:19

@ jpmc26否。WhoLockMe在Windows 7上不起作用。

–天花板
2014年11月28日19:39

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

– dgo
2015年9月14日在16:03

#4 楼

看一下Process Explorer(procexp.exe)。

从它的介绍开始:


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


要了解正在使用特定文件的进程,请按照以下步骤操作:



转到“查找”,“查找句柄”或DLL ..或直接按Ctrl + F。




输入文件名,然后按Search。




Process Explorer将列出所有具有打开文件句柄的进程。单击条目以将过程聚焦在主窗口中。




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





评论


Process Hacker也可以做到。

–天赋
2012年12月12日上午10:41

另一个答案提到,Handle是SysInternals的命令行工具,也可以完成此任务。

–重
2013年12月11日22:35

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

– davejal
16 Dec 20 '13:33



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

– MickyD
17年12月12日在8:09

无法在Win10 64位1709中工作

– K7AAY
18年8月30日在15:39

#5 楼

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


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

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



评论


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

–user3885927
16年7月19日在17:45

运气猎人为我工作,而其他人却没有

– SheldonH
16 Dec 8'在23:13

这个作品。

– jdhao
19-2-27在7:25

#6 楼

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

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

评论


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

–Lèsemajesté
2012-3-12的3:46

#7 楼

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

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

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


此工具在2019年仍然可靠地运行

评论


一如既往的Nirsoft免费软件!

–巴吉
19-11-12在10:34



#8 楼

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

评论


这仅适用于共享文件夹。

–sweetfa
13年8月14日在3:57

#9 楼

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

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

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

#10 楼

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

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

我什至尝试使用证明毫无价值的UNLOCKER。

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

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

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


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


随后,我继续看到Memeo关于“同步”的通知并退出该程序。

随后,没有错误。

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

#11 楼

我不确定是否有人使用过Process Viewer(PVIEW.exe)。当我在Windows 10框中搜索epmd.exe应用程序时,我很难找到锁定试图删除的Process Explorer的过程-我找到了此应用程序。因此,我想尝试一下就可以了(所以,这可以是另一个选择):

此应用对我来说位于以下位置-
C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT\Tools\PVIEW.EXE



查找锁定的应用程序(文件),并使用Kill Process解锁文件。