1.系统基本信息
版本:windows10专业版
版本号:21H2
操作系统内部版本:19044.1586
2.explorer高占有率现象分析
使用微软提供的工具:ProcessExplorer 查看explorer进程的栈、使用率信息(使用方法请自行百度)。
问题测试方法:
1).为了便于观察,使用快捷键windows + E 快速 打开10个资源管理器。
2).打开ProcessExplorer 查看explorer进程的栈、使用率信息。结果有如下特征:
explorer栈信息:高占有率会集中在TpReleasCleanupGroupMenber+0x450上面,而且还是周期性出现。
使用率信息:断开网络,explorer表现正常,连接网络则CPU和IO使用率非常高。
通过以上方法观察到explorer的高占有率似乎和网络有关系,但本人尝试了关闭OneDriver,windows自动更新的P2P分享设置,禁用cotana,等等网上说的一系列方法,都无法解决。
3.解决方法 ?
还是windows search的问题。但根据其他人的说法,注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search中的SetupCompletedSuccessfully要改为1即可解决问题,但本人情况下,此项值一直为1,后尝试将值修改为0后,重启explorer。很出乎意料的,问题得到了解决。(太恶心了)
电脑重启后SetupCompletedSuccessfully又会重新被自动置1,但此时explorer已经工作正常了。
!!!经过时间证明,这只是偶然,注册表修改无效。
4. 附加:CPU状态
1). 高占有率下,10个explorer的CPU表现情况:
2). 问题解决后正常的,10个explorer的CPU表现情况:
5.第一次复发
正常运行第三天后,手贱又开了几个服务,导致explorer cpu高占用问题复发。此时修改SetupCompletedSuccessfully=0并无卵用。但同时修改了:
SystemIndexNormalization = 0
UseLowPriorityConfiguration = 0
后,问题又神奇般的得到了解决。没卵用哈。
以下内容新建一个文本文件,复制即可,然后重命名为XXX.reg执行即可快速修改注册表。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TimeBrokerSvc]
"start"=dword:00000003
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\OneDrive]
"DisableFileSyncNGSC"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search]
"SetupCompletedSuccessfully"=dword:00000000
"SystemIndexNormalization"=dword:00000000
"UseLowPriorityConfiguration"=dword:00000000
前置设置如下(尝试了很多方法后的状态,不一定需要完全一致,完全一致也不一定能解决问题,参考即可。奇葩的win10BUG,讨厌死了!):
1).windows search服务是禁用状态。
2).Problem Reports Control Panel Support服务 是开启状态,其实应该影响不大,必要时可以关掉。
3).Diagnostic Policy Service、Diagnostic Service Host、Diagnostic System Host服务为禁用状态。
4).Time Broker服务为开启状态,这个关掉会导致Task Scheduler服务无法开启,影响一些软件使用。
5).组策略内关闭cortana,【允许使用cortana】【允许在锁屏界面上方使用cortana】【允许搜索和cortana使用位置】三个选项禁用即可。
6).组策略中也禁用了OneDrive的一些选项。
6.第二次复发
本人因为无意中使用了explorer的搜索功能,如下图:
然后直接触发了explorer高占用的bug。
通过观察磁盘的读写情况,只有读,而且每次只读几百字节,没有写入,这有点像是在全盘搜索遍历文件名的过程。
问题复发后,各种修改注册表,禁用服务都无效。有效的只有断网和ProcessExplorer中,suspend一个叫【shcore.dll!Ordinal】的线程(有很多,但只有一个会影响到cpu占用,某些挂起后可能会导致桌面异常,无法刷新、桌面图标无响应等等):
最后【CPU高占用问题】还是在系统运行了1个多小时后,莫名其妙的自行消失了(估计是遍历整个盘完了)。
所以windows search能不用就不用。开始菜单的搜索不会导致高占用。
!!!时间证明,这也不是问题的根本原因。
7.真·解决办法
经过时间验证,以上方法并不能彻底解决CPU高占用问题,一般重启explorer还是会复发。
某天,偶然间发现我的设备管理器页面在疯狂的自动刷新(间隔2-3s),断网后停止刷新,接通网络继续刷新,我就纳闷了这什么鬼!拔掉所有外设依旧在自动刷新。
后来,在某管上(Device Manager Keeps Refreshing Problem | Windows 10 Fix)得到启发.
首先禁用Problem Reports Control Panel Support服务。
一些可以先执行的选项:
#管理员模式打开CMD输入
sfc /scannow
DISM /Online /Cleanup-Image /CheckHealth #有问题则/CheckHealth 变 /RestoreHealth 修复。
#以上有问题先修问题
然后(用微软官方最喜欢的回应方式调试 ----->干净启动):
1).CMD控制台输入msconfig,打开系统配置,点击服务,然后选择全部禁用(注意PIN码也会失效,请确认设置了密码或者其他登陆方式,或者找到PIN码的服务不禁用)。电脑重启。看资源管理器CPU高占用现象和设备管理器的疯狂刷新有没有继续存在。如果没有,那说明肯定有1个或者多个服务导致了CPU高占用的问题。如果有,哦豁,那完蛋。
2).再次打开CMD输入msconfig,打开系统配置,点击服务,然后点击制造商,按照制造商排序。然后批量启用Microsoft Corporation的服务,然后重启,直至CPU高占用问题出现。这时我的设备管理器界面也是在疯狂刷新。
3).继续打开CMD输入msconfig,打开系统配置,点击服务,然后点击制造商,按照制造商排序。然后选择性关闭Microsoft Corporation的服务,然后重启,直至CPU高占用问题消失。这时基本上可以定位到问题服务的范围。
4).将问题服务禁用,然后启用其他所有服务,重启,若CPU高占用问题没有出现则问题基本解决。若出现,则重复以上步骤继续寻找问题服务。
最终会找到1个或者多个有影响的服务。本人经过调试找到了以下3个服务,关闭后CPU高占用问题彻底消失了,目前已经平稳运行了4天了:
至此,本人电脑的资源管理器cpu高占用问题似乎得到了解决,同时,常用的系统功能也没有太大影响。
附上前置设置:
1).windows search服务是开启状态。可以正常搜索,不会触发资源管理器高占用。调试时可以先禁用。
2).Problem Reports Control Panel Support 服务是关闭状态。
3).Diagnostic Policy Service、Diagnostic Service Host、Diagnostic System Host服务为禁用状态。
4).Time Broker服务为开启状态,这个关掉会导致Task Scheduler服务无法开启,影响一些软件使用。
5).组策略内关闭cortana,【允许使用cortana】【允许在锁屏界面上方使用cortana】【允许搜索和cortana使用位置】三个选项禁用即可。文章来源:https://www.toymoban.com/news/detail-448972.html
6).组策略中也禁用了OneDrive的一些选项。
文章来源地址https://www.toymoban.com/news/detail-448972.html
用了1个多月,并没有复发,问题服务定位到了Network List Service。写个cmd脚本手动运行开启关闭服务即可(即需要设置网络的时候打开,不需要设置网络的时候关闭)。
到了这里,关于Windows10 explorer资源管理器长时间CPU占用过高问题的调试解决过程————从懵到懂的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!