最近遇到 win10 移动硬盘无法弹出的问题,一直提示被占用,进程也无法正常暂停,这里小结下解决方法。
参考:
如何解决移动硬盘和U盘正在被占用无法弹出
在Windows中,U盘或者移动硬盘关不掉时,怎么知道是被哪个程序占用了呢?
How to Disable Msmpeng.exe and Reduce High CPU Usage
关机是最省力的办法,但是如果是因为一些特殊原因导致的无法弹出,下次依旧可能会遇到这个问题,并且机器也不一定方便关机。
那走正规途径就要中止所有占用进程,首先就要定位哪些进程占用了你的移动硬盘。
快捷键 CTRL+ALT+DEL 打开任务管理器>>性能(performance)>>打开资源监视器(resource monitor)>>CPU,或者直接在任务栏的搜索栏里找 资源管理器。打开后
在关联句柄中输入关键词(盘符)进行搜索,以下图为例,F盘 (f:) 中有如下资源被占用,可以直接右键结束进程。(建议用正常途径关闭,除非实在找不到再从这里去关。任务管理器也存在无法定位进程的问题,例如标题中提到的MsMpEng.exe,那只能通过事件查看器来定位进程)
快捷键 Win+R >> 执行 eventvwr.msc 打开事件查看器(Event Viewer) >>windows 日志(Windows Logs)>>系统(System),或者直接再任务栏搜素栏里直接找 事件查看器。
在日志列表里,找到最近的来源为 Kernel-PnP 的日志,点开即可在下面的通用中看到是什么进程占用了。
该进程是微软反恶意软件服务的一个可执行文件,用户无法手动停止该进程。
产生原因:在该进程运行时,Windows Defender 会使用一个名为 mpenginedb.db 的数据库文件中存储的哈希值,由于某些错误的标识符, Windows Security 会持续扫描该磁盘(移动硬盘 / U盘)上的所有数据。
产生结果:CPU 使用率爆满,硬盘无法正常弹出。
在我的情况中,在扫描时CPU占用率确实会达到100%,但过了一会自己就停了,硬盘也不会转。但是在选择弹出硬盘的时候,该进程又会启动,硬盘开始疯转,随后提示硬盘被占用无法弹出。
进入 windows安全中心(Windows Security)>> 病毒和威胁防护(Virus&Threat protection)>>打开 病毒和威胁防护设置 下的 管理设置
在新界面中拉到底,找到排除项,选择添加或删除排除项
在添加新的排除项中选择文件夹,弹出的对话框中选择你的移动硬盘。
重启后生效。重启前请确保其内所有文件都已正常保存并关闭。
注:该方法相当于给了对应盘符免检通行证,能够解决无法弹出的问题,但是十分危险。因为它授权的是盘符而非某个特定的移动设备,所有插入同一端口的可读设备都能够免检,一旦某次插入的移动硬盘或U盘内带有病毒,那就请漫天诸佛保佑吧。
在存在第三方安全软件的情况下,MsMpEng.exe 会让位给其它安全软件,在由第三方软件弹出硬盘的时候不会触发MsMpEng.exe 进程而改为调用第三方提供的检测进程,也就解决了该进程的占用问题。
这个步骤比较多,并且需要进入到安全模式进行操作,具体步骤参考下面这个链接。(ps:如果不是MsMpEng.exe 导致CPU 长期100%使用率的话,新手没有必要执行该操作。)
How to Disable Msmpeng.exe and Reduce High CPU Usage
下面做个翻译搬运
1)该文件是防病毒相关的系统文件,无法正常删除。首先需要禁用所有防病毒相关的选项。打开 Windows 安全中心>>病毒和威胁防护,点击管理设置。
2)禁用新窗口中的所有选项。
3)在开始菜单中打开电源选项,按住 “shift” 点击重启。电脑将重启到进入 “高级恢复界面”
4)选择 疑难解答 (Troubleshoot) >> 高级选项 (Advance Options) >> 启动设置 (Startup Settings) >> 重启 (Restart)
按下键盘上的 “4” 或 “5” 来进入安全模式。 (正常的 4 就行了)
5)开机之后,在任务栏的搜索框里搜索 “注册表编辑器” (Registry Editor),以管理员身份运行。
6) 在注册表编辑器的地址栏中输入以下地址信息并回车,左侧导航栏会跳转至对应文件夹。(当光标在地址栏中时,按两次 ALT+A 能快速清空当前地址)
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender
7)右键单击 “Windows Defender”, 选择 新建(New)>>DWORD(32-bit) 值 (DWORD(32-bit) Value)。并将新文件命名为 “DisableAntiSpyware”。
8)双击该文件,在弹出的对话框中将其值设为1,点击确认重启电脑。(该步骤能够停止病毒防护服务的自启,使得后续能够删除数据库)
9)在任务栏的搜索框中搜索“Powershell”,以管理员身份运行。
10)在弹出的shell中输入如下命令,回车执行。
Remove-Item 'C:\ProgramData\Microsoft\Windows Defender\Scans\mpenginedb.db'
11)命令执行成功后打开注册表编辑器,将之前创建的“DisableAntiSpyware”文件右键删除。随后重启电脑。
注:根据该文章评论的结果,该方法对部分人无效。作者给出的建议为重装系统。