#1 楼
我在Sysinternals Process Explorer上取得了成功。这样,您可以搜索以查找哪些进程已打开文件,并且可以根据需要使用它来关闭句柄。当然,关闭整个过程更安全。请谨慎操作和判断。要查找特定文件,请使用菜单选项
Find->Find Handle or DLL...
在文件路径的一部分中键入。进程列表将显示在下面。如果您更喜欢命令行,Sysinternals套件包括命令行工具Handle,它列出了打开的句柄。
示例
c:\Program Files\SysinternalsSuite>handle.exe |findstr /i "e:\"
(查找从驱动器e:\
打开的所有文件“ c:\Program Files\SysinternalsSuite>handle.exe |findstr /i "file-or-path-in-question"
评论
您可以合上手柄,但请记住,您是从应用程序下面拉出地毯,结果充其量是不可预测的。
– WaldenL
09年5月1日在21:57
@沃登:绝对。 YMMV。使用WinXP,我有很多次没有明显的原因打开资源管理器并拒绝将其关闭。当您需要删除文件的文件时,可以选择强制关闭句柄或重新启动。到目前为止,已经做了数十次,我没有受到任何不良影响。与任何高级工具一样,请谨慎使用。
–艾迪
09年5月1日在22:32
关闭句柄可能会导致应用重新使用另一个文件上的句柄,从而导致损坏-请参阅以下Jeff的回答:serverfault.com/a/15695/79266 ...如果您将文件保持打开状态,则杀死应用程序的安全性更高不想重启。
– RichVel
2012年3月30日8:32
对于资源管理器,顺便说一句,按住ctrl-shift并右键单击开始菜单的空白区域,您会得到“退出资源管理器”-ps,不是Jeff的答案。
– Mark Sowul
2012年4月2日在18:56
它对非执行文件没有帮助,例如文本文件。我需要知道谁在写日志文件。任何想法?
– Xaqron
13 Mar 6 '13 at 23:54
#2 楼
您可以为此使用Windows 7、8和10内置的资源监视器。可以找到开放资源监视器
通过在开始菜单中搜索Resource Monitor或resmon.exe,或
作为任务管理器中“性能”选项卡上的按钮
转到“ CPU”选项卡
使用“关联的手柄”部分中的搜索字段
请参见下面的屏幕截图中的蓝色箭头
找到句柄后,可以通过查看“图像”和/或“ PID”列来标识该过程。
然后,您可以像往常一样尝试关闭应用程序,或者,如果那是不可能的,只需右键单击该句柄并直接从那里终止进程。轻松自在!
从我的原始答案复制:https://superuser.com/a/643312/62
评论
值得注意的是,在Windows 8上很难找到该程序-搜索'resmon.exe'应该找到它。
– Kylotan
15年2月12日在10:27
@Kylotan,别再浪费时间了。只需直接从cmd运行resmon
–起搏器
15年6月8日在20:27
@Pacerier:很好。我不习惯Windows路径中的东西。
– Kylotan
2015年6月9日在8:32
这比'Handle |'更适合我。 FindStr”和“ Unlocker”替代方案,尽管它们也有效
– Marcus Vinicius Pompeu
16年1月1日在22:26
在Windows 10中仍然有效,可以通过使用“任务管理器”->“性能”选项卡中的“打开资源监视器”按钮找到。
– Norman Breau
17年2月10日在20:48
#3 楼
尝试使用openfiles命令。评论
内置命令+1,尽管我大部分时间都是亲自使用ProcessExplorer。
–RBerteig
09年5月6日在2:04
真的很有帮助。
– marko
2011-09-22 8:40
错误:目标系统必须正在运行32位OS。
– Bozojoe
2012-10-24 17:29
不适用于64 OS!
–user35861
2014年9月30日15:14
这似乎适用于Windows 2012R2 64位,但是您需要通过运行openfiles / local并重新启动来启用“开放本地跟踪”服务。这使得此功能不是很有用。
–古斯
15年8月30日在13:06
#4 楼
小心关闭手柄。由于句柄的回收,它甚至比您想象的还要危险-如果关闭文件句柄,并且程序打开其他内容,则关闭的原始文件句柄可能会被“其他”重用。现在猜想如果程序继续运行,以为它正在处理文件(您关闭了它的句柄),而实际上文件句柄现在指向其他东西,将会发生什么。请参阅Raymond Chen关于该主题的文章
假设搜索索引服务打开了一个文件以供建立索引,但是暂时被卡住了,您想删除该文件,因此(不明智地)强制关闭句柄。搜索索引服务打开其
日志文件以记录一些信息,并且删除已删除文件的句柄作为日志文件的句柄。卡住的
操作最终完成,搜索索引服务最终得到
关闭它已经打开的句柄,但是最终却不知不觉地
关闭了日志文件句柄。
搜索索引服务会打开另一个
文件,例如一个要写入的配置文件,以便它可以更新某些持久状态。日志文件的句柄作为配置文件的
句柄被回收。搜索索引服务想要记录一些信息,因此将其写入其日志文件。不幸的是,
日志文件句柄已关闭,并且该句柄已重新用于其配置
文件。记录的信息进入配置文件,
将其破坏。
同时,您强制关闭的另一个句柄作为互斥锁句柄被重新使用
,该互斥锁用来帮助防止数据被污染
损坏。当原始文件句柄关闭时,互斥锁
将关闭,并且防止数据损坏的保护也会丢失。
服务运行的时间越长,索引的损坏就越严重。
最终,有人注意到索引返回的结果不正确。
而且,当您尝试重新启动该服务时,该服务会失败,因为其
配置文件已损坏。
您将该问题报告给了提供搜索索引服务的公司,并且他们确定了该问题。 />索引已损坏,日志文件神秘地停止了
记录,并且配置文件被垃圾覆盖。为一些
技术人员分配了绝望的任务,以弄清该服务为何损坏其索引和配置文件,而没有意识到损坏的根源是您强制关闭了句柄。 />
评论
重要警告,应该越靠近顶部-重新启动可能比静默损坏的文件更好。
– RichVel
2012年3月30日在8:27
+1这肯定会让我三思而行。 Windows会立即重用封闭句柄的数量,而不是继续增加数量并仅在必要时进行环绕,这对我来说似乎很奇怪。这至少会大大减少发生此问题的机会。
–EM0
2014年12月8日20:49
@RichVel终止罪魁祸首的过程可能比完全重新启动更好。
–德米特里·格里戈里耶夫(Dmitry Grigoryev)
17年5月5日在8:21
@DmitryGrigoryev-好点,事实上我已经在这里提到过
– RichVel
17年5月24日在8:27
这是一个非常重要的警告,但不能回答以下问题:如何找到在Windows中打开文件的进程?
– Ploni
17年7月26日在14:56
#5 楼
我过去曾成功地使用过Handle来找到这样的过程。评论
我一直在使用这个工具。如果无法弹出USB驱动器,则只需键入“ handle H:”(或任何驱动器号)。最重要的是,您可以使用它来强制关闭手柄。
–克里斯·汤普森(Chris Thompson)
09年5月2日在7:02
#6 楼
Lockhunter(http://lockhunter.com/)可在32位和64位系统上运行。评论
也可以从Windows资源管理器中该文件的上下文菜单中使用。
–user61849
19 Jun 26'在22:01
#7 楼
需要澄清的是,这很可能是由于第三方应用程序行为不当而导致的,而不是Windows本身。也许这是CreateFile设计的结果,但是已经完成了,我们不能退回。基本上,在Windows程序中打开文件时,您可以选择指定允许共享的标志。访问。如果不指定标志,则程序将以独占方式访问文件。
现在,如果“资源管理器”似乎是罪魁祸首,则可能只是表面上的情况,并且真正的罪魁祸首是安装了shell扩展程序,该扩展程序出于自身目的打开了文件夹中的所有文件,但这样做太费劲了,或者在执行后无法正确清理。赛门铁克AV是我以前见过的事情,如果还要归咎于其他AV程序,我也不会感到惊讶。源代码控制插件也可能出错。在具有隐式文件锁定功能的任何其他操作系统上,但默认情况下,任何基于unix的操作系统都具有共享访问权限。)
评论
我不会责怪第三方应用程序,因为我的Windows资源管理器始终将Thumbs.db文件锁定在其工作目录中,但是当我切换工作目录时并不总是将其解锁。至少当我关闭窗户时,它们是解锁的,我不必杀死所有浏览器...
–亚历山大
2014年3月7日在7:32
@Darth,您是Microsoft的营销人员吗?
–起搏器
15年6月8日在20:29
#8 楼
Who Lock Me运作良好,并让人们为这个名字感到开心!评论
在64位Windows 8和10中不起作用。
–rustyx
16年8月15日在7:38
#9 楼
在远程服务器上,当您检查网络共享时,诸如“计算机管理”控制台之类的简单操作可以显示此信息并关闭文件。评论
确实,为什么会有这么复杂的答案?
–罗希特·古普塔(Rohit Gupta)
16年8月31日在2:52
#10 楼
保持打开文件的Apropos Explorer:“当您需要删除文件时,可以选择将其关闭或重新启动。”您可以结束Explorer。
如果这是一次性的事情(Explorer通常不会打开该文件),那么我想注销并重新登录将达到目的。
否则,请杀死桌面资源管理器进程,并在它消失后做您想做的事情。首先启动cmd.exe的副本(您需要使用UI进行预期的清理)。确保没有正在运行的非桌面资源管理器。然后使用例如任务管理器杀死最后一个资源管理器。在命令提示符下执行所需的操作。最后,从命令提示符运行Explorer,它将变成桌面。
如果某些系统托盘程序无法处理shell重新启动,我想可能会残留一些不愉快的内容。 >
评论
这比关闭手柄安全得多,比重新启动破坏性小。同样适用于其他程序-我经常发现Microsoft Office程序即使在关闭文件后也可以锁定文件。
– RichVel
2012年3月30日8:30
#11 楼
可以通过本地进程(使用解锁工具)和通过共享进入的文件访问来锁定文件。Windows中有一个内置功能,可向您显示本地计算机上的哪些文件被远程计算机打开/锁定(通过文件共享打开文件):
* Select "Manage Computer" (Open "Computer Management")
* click "Shared Folders"
* choose "Open Files"
您甚至可以强行关闭文件。
#12 楼
也有NirSoft的“打开的文件”视图。评论
就个人而言,我比Process Explorer更喜欢此特定任务。
–JamesBarnett
13年2月25日在19:38
#13 楼
使用Process Hacker,您可以轻松识别哪些进程正在保存文件:#14 楼
上面提到的答案涵盖了程序进程将文件句柄保持打开状态的情况(幸运的是,大多数情况下是这种情况),但是在某些情况下(如当前在此系统上发生的情况),系统本身拥有文件句柄打开。您可以按照以下说明使用上面的进程资源管理器查找文件句柄保存进程,并注意进程名称被列为“系统”,或者按照说明进行操作,以识别这种情况。使用资源监视器,并注意在感兴趣的文件上没有打开文件句柄的情况下未显示任何图像(尽管显然有些事情可以进行编辑/删除等操作)。选项(据我所知)是重新启动-或忘记对该文件执行任何操作。
#15 楼
不久前,我由Jeremy Zawodny的博客启用了Extendeded Task Manager,这对于跟踪流程的更多信息也非常有用。上面的Process Explorer也是+1,特别是对于杀死标准Task Manager不会结束的进程。#16 楼
有一个工具FILEMON,它显示打开的文件和句柄。如果您实时观看它,则很难跟上其显示的步伐,它是如此之快。但是您可以阻止它实时显示,并且可以观看所有文件打开/写入活动。现在由Microsoft拥有,但最初是Sysinternals评论
它的更新版本是进程监视器。您可以在这里获得它:http://technet.microsoft.com/en-us/sysinternals/bb896645
– Yitwail
2011年6月9日19:49
评论
您可能会认为,经过所有这些时间,Windows专家会为我们提供一种从资源管理器中轻松完成此操作的方法。我想知道为什么没有发生吗?我发现资源管理器经常是没有明显原因而保留在文件上的问题过程。
我知道这对您无济于事,但我想我记得这是Vista和2008 Server之后的下一个Windows版本的计划功能。也许这是WinFS。不知道我在哪里读的...
在这里查看我对超级用户的回答,总之OpenedFilesView在2019年仍然有效