![Windows 能否告诉我什么正在使用我的 USB 驱动器?](https://linux22.com/image/1225810/Windows%20%E8%83%BD%E5%90%A6%E5%91%8A%E8%AF%89%E6%88%91%E4%BB%80%E4%B9%88%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%E6%88%91%E7%9A%84%20USB%20%E9%A9%B1%E5%8A%A8%E5%99%A8%EF%BC%9F.png)
作为一个好公民,我左键单击任务栏中的“安全删除硬件”图标,然后选择要卸载的 USB 驱动器。
然后我收到消息:
Windows 无法停止您的通用卷设备,因为它正在使用中。请关闭所有可能正在使用该设备的程序或窗口,然后稍后重试。
当然,作为操作系统,它知道确切地哪些应用程序正在使用我的设备。那么为什么它不告诉我呢?
或者有什么方法可以帮助我找到答案?
答案1
您可以使用Sysinternals 进程浏览器查找任何打开的文件的句柄。只需选择菜单Find
并选择Find Handle or DLL
。在打开的对话框中,将驱动器号输入到搜索框中。搜索结果应显示从驱动器打开的所有文件以及哪个进程打开了它们。
答案2
快速解决方案: 安装锁猎人,然后右键单击该文件/文件夹/驱动器并选择“什么锁定了这个……?”
本机方法Native Method:当您尝试弹出可移动驱动器但因进程锁定而无法弹出时,Windows(据我所知至少为 10)会在事件日志中创建一个条目。两个事件 ID 225 将显示负责锁定的进程 ID 和进程名称。
一步步:
打开“Windows 日志”,然后打开“系统”
右键单击“系统”,然后选择“过滤当前日志”
在出现的对话框中,在“所有事件 ID”处输入“225”(不带引号)
然后,您将看到所有与无法弹出相关的事件,因为某个进程锁定了驱动器。
查看所有这些条目的时间戳,找出哪些与您尝试弹出驱动器的实际时间相关。
采取适当的措施。大多数情况下,正常结束任务(关闭有锁的程序)是可以的。停止 Windows Search 服务也可以。停止防病毒扫描应该可以(如果您当时不怀疑有任何病毒)。进入任务管理器并终止进程可能不行。如何处理这个问题超出了这个问题的范围。
(保存视图...)在操作面板(在右侧框架中),您可以“将过滤器保存到自定义视图...”,这样您就可以在“自定义视图”(在“Windows 日志”上方的左侧框架中)中找到它
- 如果你没有其他带有进程名称的条目,系统进程(进程 ID 4)正在占用您的驱动器。要解决这个问题,您必须转到磁盘管理并将要弹出的驱动器置于脱机状态。如果文件位于启动驱动器上,则无法将其脱机。在这种情况下,请参阅以下说明:
2018 年更新:我见过这样的应用程序WhatsApp Desktop 通过系统进程控制 Chrome Canary 上的进程。由于无法弹出启动盘(因为它正在使用中),解决方案是使用另一个巧妙的系统内部实用工具,称为处理。关闭锁定文件的程序后,启动句柄并运行(作为示例)handle64 "Chrome SxS\Application\chrome.exe"
以查看句柄是否仍然存在于具有 PID 4 锁的文件上。通过反复试验,关闭每个正在运行的程序,直到锁定文件上没有更多句柄。
2022 年更新:微软的得力助手动力玩具现在包含一个扩展来检查哪个进程正在锁定文件/文件夹。它被称为文件锁匠而且它是免费下载的。虽然你可以自定义要启用的 PowerToy 功能,但如果这是你唯一要使用的功能,那就有点小题大做了。最好使用专用工具来完成这项工作。
付费选项(同样很好用)
下载并运行安全移除,由 LockHunter 的制作者开发。我不确定他们为什么要对 SafelyRemove 收费,而他们的免费 LockHunter 已经可以完成这项工作。但它可以帮助您弹出驱动器,如果无法弹出,它会显示哪些进程已锁定:
答案3
您还可以使用命令行查询Windows日志, 和工具实用程序(自 Windows 7 起)Windows Kernel-PnP 使用事件 ID 225记录系统(始终具有进程 ID 4)拒绝移除或弹出设备 USB\VID_####&PID_############(其中 # 表示十六进制数)。
wevtutil qe System /q:"*[System[(EventID=225)]]" /c:5 /f:text /rd:true
- qe 系统:从系统日志查询事件
- /q :使用 XPath 查询
EventID=225
表示系统拒绝了弹射请求- /c:5 :要检索的条目数(此处为 5)
- /f:text:格式(默认为 xml)
- /rd:true :反向顺序(最新的在前)
我在批处理脚本中使用它。
答案4
您可以启动 resmon.exe(通过 WIN+R),转到磁盘 > 磁盘活动 > 按文件排序现在您可以看到系统正在访问的所有文件以及哪些进程正在访问它们,并按文件路径排序(顺便说一下,以驱动器号开头)。可能不适用于所有情况,但这是一种简单的方法。
重新启动计算机似乎可以“释放”设备使用量。此外,为了更快地删除,您可以在设备的“硬件”部分禁用 Windows 缓存,有时 Windows 将花费比预期更长的时间将缓存刷新到外部磁盘,并会显示该消息,表明该设备正在使用中(因为 Windows 本身会使用它)