MsMpEng.exe占用100% CPU导致电脑无法使用的解决方法求助
兄弟我太懂你这种糟心的感受了——MsMpEng.exe作为Windows Defender的后台扫描进程,一旦拉满CPU,电脑基本就废了!结合你描述的情况,给你几个实际可行的排查和解决思路:
先确认是不是实时保护在偷偷干活:你看到的凌晨计划扫描虽然结束了,但Windows Defender的实时保护会在你读写文件时自动触发扫描,尤其是你有大量文件操作的时候。可以临时关掉实时保护(路径:设置→病毒和威胁防护→管理设置→实时保护)试试,如果CPU立马降下来,那就是实时保护的问题。之后把ProcMon里看到的那些频繁被读取的文件夹/文件类型/甚至相关进程都加入排除列表,别只加文件夹,有时候特定文件类型也会被反复扫描。
调整扫描计划和CPU占用限制:默认的扫描计划可能刚好撞上你的工作时间,或者扫描时完全不限制CPU。如果是专业版/企业版系统,用组策略编辑器(
gpedit.msc)来改:- 打开组策略,找到「计算机配置→管理模板→Windows组件→Microsoft Defender防病毒→扫描」
- 把计划扫描的时间改成你完全不用电脑的时段(比如凌晨1点),避免和工作冲突
- 找到「扫描期间的CPU使用率限制」,设个合理的值(比如30%),这样就算扫描也不会把CPU占满
修复Defender的损坏文件:有时候Defender的核心文件出问题会导致扫描异常疯跑。打开管理员命令提示符,依次跑这两个命令修复:
sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth修完重启电脑,再观察CPU占用情况。
排查第三方软件冲突:有些杀毒软件、备份工具或者同步软件会和Defender抢文件访问权,逼得MsMpEng不停扫描。如果装了其他安全软件,先暂时卸载试试;要是备份/同步工具,调整它们的运行时间,避开你的工作时段。
关于进程亲和力的问题:你说用Process Explorer改被拒绝很正常,因为Defender进程是系统保护的,普通管理员权限碰不了。可以试试用管理员PowerShell强制改,但这个方法有风险,而且重启后会重置,谨慎操作:
$process = Get-Process MsMpEng $process.ProcessorAffinity = 0x0003 # 0x0003代表只用前2个核心,你可以根据自己CPU核心数调整数值
备注:内容来源于stack exchange,提问作者Clutchplate




