Windows 最让我恼火的一点就是老旧的共享违规错误。通常你无法确定是什么让它保持打开状态。通常它只是一个指向相关目录的编辑器或资源管理器,但有时我不得不重启我的机器。
关于如何找到罪魁祸首有什么建议吗?
答案1
我曾成功系统内部 进程探索器。通过这个,您可以搜索哪些进程打开了文件,并且您可以根据需要使用它来关闭句柄。当然,关闭整个进程更安全。请谨慎并做出判断。
要查找特定文件,请使用菜单选项Find->Find Handle or DLL...
键入文件的部分路径。进程列表将显示在下面。
如果你喜欢命令行,Sysinternals 套件包含命令行工具处理,列出打开的句柄。
例子
c:\Program Files\SysinternalsSuite>handle.exe |findstr /i "e:\"
(查找从驱动器e:\
“打开的所有文件c:\Program Files\SysinternalsSuite>handle.exe |findstr /i "file-or-path-in-question"
答案2
您可以使用资源监控因为这将会发生内置适用于 Windows 7、8 和 10。
- 打开资源监控,可以发现
- 通过搜索资源监控或者 恢复工具在开始菜单中,或
- 作为表现选项卡中的任务管理器
- 前往中央处理器标签
- 使用搜索字段在里面关联句柄部分
- 参见下面屏幕截图中的蓝色箭头
找到句柄后,您可以通过查看图像和/或 PID 列来识别该过程。
然后,您可以尝试像平常一样关闭该应用程序,或者,如果这不可能,只需右键单击句柄并直接从那里终止该进程。 很简单!
从我原来的答案复制:https://superuser.com/a/643312/62
答案3
关闭句柄时要非常小心;由于句柄回收,它比您想象的还要危险 - 如果您关闭文件句柄,而程序打开了其他内容,则您关闭的原始文件句柄可能会被重新用于该“其他内容”。现在猜猜如果程序继续运行,认为它正在处理文件(您关闭了其句柄),而实际上该文件句柄现在指向其他内容,会发生什么。
看Raymond Chen 的帖子关于这个话题
假设搜索索引服务打开了一个文件进行索引,但暂时卡住了,而您想要删除该文件,因此您(不明智地)强制关闭句柄。搜索索引服务打开其日志文件以记录一些信息,并且已删除文件的句柄被回收用作日志文件的句柄。卡住的操作最终完成,搜索索引服务最终关闭了它打开的句柄,但它最终无意中关闭了日志文件句柄。
搜索索引服务打开另一个文件,比如配置文件,用于写入,以便更新某些持久状态。日志文件的句柄被回收用作配置文件的句柄。搜索索引服务想要记录一些信息,因此它会写入其日志文件。不幸的是,日志文件句柄已关闭,并且句柄被重用于其配置文件。记录的信息进入配置文件,从而损坏了配置文件。
同时,您强制关闭的另一个句柄被重新用作互斥句柄,该句柄用于帮助防止数据损坏。当原始文件句柄关闭时,互斥句柄也会关闭,并且对数据损坏的保护也会丢失。服务运行的时间越长,其索引损坏的程度就越大。最终,有人会注意到索引返回的结果不正确。当您尝试重新启动服务时,它会失败,因为其配置文件已损坏。
您向提供搜索索引服务的公司报告了这个问题,他们确定索引已损坏,日志文件莫名其妙地停止了记录,配置文件被垃圾覆盖。一些可怜的技术人员被分配了一项无望的任务,即找出服务损坏其索引和配置文件的原因,而他们不知道损坏的根源是您强制关闭了句柄。
答案4
我用过处理并在过去成功发现了此类过程。