ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Win10桌面图标闪烁、任务栏刷新:explorer与Shell扩展排查

Win10桌面图标闪烁、任务栏刷新:explorer与Shell扩展排查 桌面图标整片整片地闪任务栏上的图标隔几秒集体重绘一次鼠标点下去像踩在棉花上——这是上周一个做设计的朋友发来的原话。我这些年处理过几十台同类机器从千元办公本到双路工作站都遇到过说句实在话这事跟机器贵不贵基本没关系九成以上的情况都是外壳程序也就是 explorer.exe被某个东西反复触发重绘或者它自己陷入了崩溃、被系统拉起、再崩溃的死循环。Win10 桌面图标闪烁、任务栏图标不停刷新这类现象最后都能落到下面某一条具体原因上。这篇文章适合两类人看一类是动手能力一般、但愿意照着步骤一步步试的另一类是已经换过显卡驱动、甚至重装过一次系统仍然没解决想搞清楚到底哪里出了问题的。全程不需要装那些号称一键修复的第三方大师软件用系统自带工具加上两个微软官方的小工具就够用了。我会把排查顺序、判定依据、命令的每一条参数含义、以及我自己踩过的坑都写清楚尽量做到你照着走一遍能自己定位到病灶。1. 先分型三种闪背后是三套完全不同的机制很多人一上来就搜图标闪烁怎么修然后照着某个教程删缓存、改注册表折腾半天没用原因就是没先分清自己属于哪一种闪。屏幕在闪、图标在闪、任务栏整条在重建这三件事的成因差别很大处理手段几乎不重叠。我一般会让对方先做一件很土但很有效的事拿手机对着屏幕录一段十秒的视频然后一帧一帧看。1.1 用手机录像给现象做个尸检如果是显示器背光或者线材的问题录出来的画面里会出现规律性的横纹、整体亮度起伏图标和文字一起变暗变亮而且你按 WinPrtSc 截屏截出来的图是完好的——因为 GPU 输出的画面本来就是对的只是屏幕没显示好。这种情况你把注意力放在硬件上软件层面怎么修都没用。如果只有图标和图标文字下面的那一小块区域在闪窗口内容、浏览器页面都是稳定的截图还能截到闪烁的瞬间那属于 shell 层的图标重绘也就是资源管理器在反复重新取图标。任务栏整体消失半秒再冒出来、开始菜单点不动、桌面图标全部重新排列一遍这种是 explorer.exe 进程崩溃后被系统自动重启典型特征是任务栏的时间区域会重新加载。注意截屏正常但肉眼看着闪先怀疑显示链路截屏就能截到异常才往系统和软件方向查。这一步能帮你省掉至少一半的无效操作。1.2 explorer.exe 到底在什么情况下才重画图标explorer.exe 不只是文件管理器窗口它是整个图形外壳桌面、任务栏、开始菜单、通知区域全部归它管。它重画图标只有两个触发源。第一个是文件系统变化通知任何一个文件被创建、删除、改名、改属性系统都会广播一条变更通知桌面和任务栏收到后就会重新去取一次图标。正常情况下你复制一个文件到桌面图标闪一下就完了但如果某个程序每秒都在往桌面或者用户目录写临时文件那就变成了持续闪烁。第二个触发源是 shell 扩展。所有带角标叠加的软件——网盘同步客户端、杀毒软件的文件状态标记、版本控制工具的图标覆盖——都会往系统里注册一个图标覆盖处理器。系统对这类处理器的槽位是有数量限制的而且每次取图标都要挨个调用一遍。只要其中有一个扩展卡住、或者它指向的目标是一个已经断开的网络位置取图标就会超时系统重试你再看到的就是闪烁。还有一个容易被忽略的点explorer.exe 崩溃后Windows 默认会自动把它拉起来用户几乎感觉不到崩了只会觉得又闪了一下。这就是为什么很多人以为系统没问题其实事件日志里已经躺了几十条崩溃记录。1.3 五分钟定位法三个自带工具锁定嫌疑对象我处理这类问题的第一动作永远是打开任务管理器看 explorer.exe 的进程 ID 和启动时间。按 CtrlShiftEsc切到详细信息选项卡找到 explorer.exe盯它三十秒。如果 PID 一直在变或者启动时间每隔一会儿就刷新一次那基本可以确定是崩溃重启循环接下来直接去事件查看器找崩溃的模块名。观察到的现象指向的机制首个要查的地方explorer.exe 的 PID 反复变化进程崩溃后被自动重启事件查看器中的应用程序错误记录PID 不变但图标持续重绘文件变更通知风暴或扩展卡顿资源监视器里的磁盘写入、Shell 扩展列表只有图标和文字在闪界面稳定图标缓存损坏或图标来源不可达桌面上的无效快捷方式、断开的网络驱动器整屏亮度起伏、截图正常显示链路问题视频线、扩展坞、显示器刷新率事件查看器按 WinR 输入 eventvwr.msc进Windows 日志 - 应用程序右侧筛选当前日志事件来源勾选 Application Error 和 Application Hang。重点看出错的应用程序名称和出错模块名称这两栏。我遇到过最典型的一次出错模块指向某一个云盘的 shell 扩展动态库卸载客户端后世界立刻安静了。第三个工具是可靠性监视器WinR 输入 perfmon /rel它会用时间轴的方式把每天的崩溃、驱动失败、更新事件画出来。好处是直观你能看到问题是上周三装完某个软件之后才开始的因果关系一目了然。2. 从外到内五级排查路线先砍掉一半可能性排查这种事最忌讳东一榔头西一棒子。我固定用一套由外到内、由便宜到昂贵的顺序好处是前面的步骤就算没解决问题也不会把系统搞乱而且能排除掉的都是大范围可能。下面这五级前三级加起来通常半小时以内能走完。2.1 零级外设和显示链路这一步千万别跳过先做物理隔离。把 USB 设备全部拔掉只留键盘鼠标如果用的是无线键鼠把接收器也拔了换有线。我碰到过两次印象极深的案例一次是键盘的 F5 键卡住了等于有人在不停按刷新另一次是数位板的笔尖悬停被误识别系统不停收到输入事件。这类问题你在软件层面查一万年也查不出来。接着换显示链路。如果是台式机且用独立显卡把视频线从显卡换到主板核显接口试一次线材本身也要换一根尤其是那些用了三四年的廉价 HDMI 线屏蔽层老化之后会间歇性丢信号。用了扩展坞或者 KVM 切换器的先把它们从链路里去掉直连显示器。笔记本电脑的话断开扩展坞只用内置屏幕观察再单独接外接屏观察能快速区分是屏幕问题还是接口问题。还有两个软件层的显示选项值得看一眼。一个是刷新率右键桌面进显示设置把刷新率手动指定成 60Hz 并保持别用59.94Hz这类非标准值某些显示器在这种微小偏差下会周期性闪。另一个是显示器的 DDC/CI 功能部分品牌的显示器开启后系统会周期性读取显示器状态某些驱动组合下会引发画面抖动可以在显示器 OSD 菜单里关掉试试。2.2 一级重启外壳与重建缓存这一级是最多人尝试的也是最多人做错的。重启 explorer.exe 的正确姿势是先结束再启动而不是直接重启电脑——因为重启电脑会顺带做一堆别的事你没法判断到底是哪一步起的作用。重建图标缓存的具体命令我在第 3 章会逐条讲。这里只强调两个直接影响成败的细节。第一缓存文件在当前登录用户的目录下命令必须在当前用户的上下文里执行用管理员权限的另一个账户去跑删的是别人的缓存等于白做。第二删缓存之前一定要先结束 explorer.exe否则文件被占用删除命令会静默失败又不报错你会以为删成功了。顺手把桌面上的无效快捷方式清理掉。判断方法很简单把桌面图标改成大图标模式凡是图标显示成白纸一张、或者双击提示找不到目标的全部删掉或者重新创建。那些指向已经下线的网络共享、已经拔掉的移动硬盘的快捷方式是取图标超时的高发源头。同时检查一下有没有映射到已经不存在的服务器的网络驱动器命令行执行net use能看到列表断开的用net use * /delete清掉。2.3 二级干净启动加启动项二分法如果前面两步没效果就要请出干净启动了。WinR 输入 msconfig进服务选项卡勾选隐藏所有 Microsoft 服务然后把剩下的第三方服务全部取消勾选再进启动选项卡跳到任务管理器里把启动项全部禁用。重启观察。干净启动之后不闪了说明问题出在某个随开机启动的软件上接下来就是二分法一次启用一半重启看结果逐步缩小范围。别嫌麻烦八到十个候选软件最多四轮就能锁死。这一步的价值在于它给出的结论是确定的——不是可能跟某软件有关而是就是它。干净启动之后仍然闪那基本可以把第三方开机软件排除掉大半往驱动、系统文件、用户配置方向走。2.4 三级Shell 扩展和右键菜单插件这里是重灾区shell 扩展是这类问题里出现频率最高的元凶偏偏它也是最难被普通用户发现的因为它不显示在启动项里。往系统注册图标角标、右键菜单项、属性页、预览处理器的软件全部属于这一类。常见的嫌疑人名单云盘同步客户端、第三方压缩工具、PDF 阅读器的预览插件、截图工具的右键菜单、显卡控制面板的桌面右键项、部分打印机的状态监控程序、以及各种桌面整理美化工具。排查工具我用两个。一个是微软官方的 Autoruns在 Sysinternals 套件里下载解压就能用不需要安装。以管理员身份运行后先点 Options 菜单勾上Hide Microsoft Entries这样剩下的全是第三方项。重点看 Explorer 标签页、Logon 标签页和 Scheduled Tasks 标签页。另一个是 NirSoft 的 ShellExView它按类型列出所有注册的 shell 扩展点Microsoft那一列排序先禁用非微软的项。注意这两个工具里的操作一律用禁用不要用删除。禁用是可逆的出问题勾回来就行删了之后想恢复你得重新装一遍对应软件。2.5 四级驱动、系统文件和用户配置走到这一级剩下三个大方向。显示驱动是第一个判断依据是事件查看器里有没有事件 ID 4101这条记录的原文大意是显示驱动程序已停止响应并且已恢复也就是常说的 TDR。有这条记录驱动问题基本可以确认处理方式是干净卸载重装而不是在旧驱动上覆盖安装。系统文件是第二个方向先用 DISM 修复组件存储再用 sfc 扫描顺序别搞反理由在第 3 章讲。用户配置是第三个方向判断方法极其简单新建一个本地账户登录在里面观察还闪不闪。新账户不闪、老账户闪那就是原用户的配置文件损坏而不是系统坏了这种情况不需要重装系统迁移数据到新账户就行。3. 关键修复的完整实操命令逐条拆开讲前面讲的是思路这一章讲具体动作。我尽量把每条命令在干什么、为什么这么写、写错了会怎样都说明白方便你直接抄作业也方便出问题时对照排查。3.1 重建图标缓存正确姿势与参数解释图标缓存不是一个文件而是一组文件Win10 里它们的位置和 Win7 时代不一样了网上很多老教程还在教人删 IconCache.db 单文件那个文件在 Win10 里往往根本不存在或者已经废弃。当前版本真正起作用的是这两个目录下的数据库文件。打开命令提示符普通权限即可用当前登录用户启动依次执行taskkill /f /im explorer.exe del /a /f /q %LocalAppData%\IconCache.db del /a /f /q %LocalAppData%\Microsoft\Windows\Explorer\iconcache* del /a /f /q %LocalAppData%\Microsoft\Windows\Explorer\thumbcache* start explorer.exe第一条命令强制结束外壳进程桌面和任务栏会消失这是正常的。第二条清掉旧版遗留的缓存文件。第三、四条是重点分别对应图标缓存和缩略图缓存通配符会一次清掉所有分片文件。/a的意思是连隐藏属性的文件一起处理这类缓存文件默认是隐藏的/f强制删除只读文件/q静默模式不弹确认框。最后一条把 explorer 拉回来。整个过程大概两三秒桌面会重建一次图标可能短暂变成白纸再恢复这是重新生成缓存的过程。如果执行完发现桌面没回来按 CtrlShiftEsc 打开任务管理器文件菜单里新建任务输入 explorer 回车即可。有个常见现象值得提前说清楚重建缓存之后第一次进桌面图标加载会慢一点尤其是装了大型设计软件或者游戏、快捷方式特别多的机器缓存可能要好几分钟才完全生成。这期间你还是会看到一些重绘动作别急着下结论说没用等五分钟再看。3.2 用 Autoruns 精准禁用可疑的 shell 扩展下载 Sysinternals 的 Autoruns 之后解压运行界面分区很多第一次看容易懵。我的固定路径是这样的先点 Options 菜单勾选 Hide Microsoft Entries 和 Hide Empty Locations把噪音滤掉然后只重点看三个标签。Explorer 标签列出的是所有挂到资源管理器上的扩展包括右键菜单、图标角标、属性页、拖放处理器这是重灾区里的重灾区。Logon 标签是随登录启动的项等价于任务管理器里那个启动项列表但信息更全能看到具体的命令行参数。Scheduled Tasks 标签是计划任务很多软件会用它做定时更新检查写得不好就会周期性触发磁盘写入进而引发通知风暴。找到可疑项之后把最左边的复选框取消勾选就算禁用重启生效。我的建议是一次只禁用一到两个别一口气关二十个否则禁用之后问题解决了你也不知道是哪一个。如果实在要批量操作就用二分法一次一半。Logon 标签里还有一个细节值得看如果某一项的发行者显示为文件未找到或者路径指向一个已经不存在的目录这种残留项会反复尝试加载失败也可能牵动系统做无意义的刷新。这种直接删掉是对的。3.3 用 Process Monitor 抓出谁在疯狂刷桌面如果前面都排查完了还是找不到源头那就上强度用 Process Monitor 直接抓现行。这个工具同样是 Sysinternals 出的免安装。核心思路是既然图标闪烁本质上是被文件变更通知触发的那就把操作桌面目录的所有写入行为抓出来看是谁在疯狂写。打开 Procmon 之后它会开始刷巨量的日志先按 CtrlE 停止捕获点 Filter 菜单里的 Filter 选项加三条过滤条件第一条Path 包含 Desktop操作符选 contains第二条Operation 是 WriteFile或者直接加一个操作符选 is、值为 CreateFile 的条件第三条如果知道大致是哪个目录可以把路径收窄。设置好之后按 CtrlE 重新开始捕获等闪几次再停下。然后点 Tools 菜单里的 Process Activity Summary或者在列表里按进程名排序看哪个进程的调用次数以每秒几十上百次的频率在涨。我通过这些操作抓到过好几个典型一个是某笔记软件的自动保存每隔 200 毫秒往桌面写一个临时文件一个是某个文件同步工具在反复重试一个已经失效的目标路径还有一个是回收站监控相关的第三方工具。抓到之后处理就简单了要么改配置把这类频繁写入关掉或者改到别的目录要么直接卸载。这里有个技巧Procmon 的日志量很大长时间开着会吃掉大量内存抓够两三分钟就停下来导出分析。3.4 显卡驱动干净重装与 TDR 判定判定依据前面提过事件查看器里的事件 ID 4101一天出现好几次的话基本可以定案。处理流程分三步。第一步用 DDUDisplay Driver Uninstaller在安全模式下彻底卸载当前驱动它会连注册表残留和驱动仓库一起清比控制面板卸载干净得多。第二步重启后装官方驱动笔记本优先去芯片厂商官网下载对应型号的驱动如果装完出现花屏或者无法调节亮度这类问题再换回机器厂商提供的版本。第三步装完之后进驱动控制面板把硬件加速 GPU 计划这类开关先关掉观察几天确认没问题再考虑打开。还有一类和驱动无关但表现很像的情况某些把渲染放到后台的软件比如壁纸引擎、桌面挂件、动态主题会持续占用 GPU 做合成如果它们的渲染循环出问题也会让整个桌面看起来在抖。排查方法是把这些软件全部退出用系统自带壁纸观察十分钟。3.5 系统文件修复与用户配置文件判定系统文件检查的正确顺序是先 DISM 再 sfc理由很实在DISM 修的是组件存储也就是系统镜像的备份源sfc 在修复时会从这个备份源里取文件替换损坏的项。如果备份源本身是坏的先跑 sfc 就等于拿一份坏文件去修另一份坏文件最后报个无法修复某些文件让你一头雾水。以管理员身份打开命令提示符依次执行DISM /Online /Cleanup-Image /RestoreHealth sfc /scannowDISM 这一步可能跑十分钟以上中途进度条卡在 20% 左右是正常现象别强行中断。sfc 跑完之后会给出三种结果其中未找到任何完整性冲突是最好的如果报找到了损坏文件但无法修复日志在%windir%\Logs\CBS\CBS.log可以拿去进一步分析。用户配置文件的判定我前面说了新建本地账户登录观察。这里补一个细节新账户里如果一切正常不要急着直接迁移先用两三天确认稳定了再迁。迁移的时候不要整个用户目录复制粘贴那样会把损坏的注册表配置也带过去正确做法是只迁文档、图片、下载这些数据目录软件重新装。如果连新账户都闪系统文件也修不好那再考虑就地升级下载对应版本的安装镜像在系统里直接运行安装程序选择保留个人文件和设置。这个动作本质上是用新系统覆盖旧系统文件比全新安装省事得多成功率也高。4. 常见问题速查表与三个被误判的真实案例排查到最后你会发现真正系统坏了的比例极低绝大多数都能落到几个固定原因上。我把这些年遇到的整理成一张表你可以按症状直接查。4.1 症状与原因对照速查表症状表现最可能的原因优先处理动作PID 不断变化任务栏整条重建某个 shell 扩展导致 explorer 崩溃用 Autoruns 禁用第三方 Explorer 扩展图标不停重绘PID 不变文件变更通知风暴Procmon 抓桌面写入来源只在打开某个文件夹时闪该目录内有需要联网取图标的文件清掉无效快捷方式、断开的网络驱动器全屏亮度起伏截图正常线材、扩展坞或显示器问题换线直连关闭 DDC/CI播放视频或运行游戏时闪驱动 TDR事件 ID 4101 确认DDU 重装驱动只有某个账户闪用户配置文件损坏新建本地账户验证并迁移插上某个 USB 设备就闪设备驱动冲突或输入设备误触逐个拔插定位任务栏图标消失但不闪通知区域图标设置被改任务栏设置里重新开启系统图标4.2 案例一一个断掉的网络快捷方式引发的血案某次帮一家小公司处理一批机器症状是登录后桌面图标持续重绘大概持续十分钟才慢慢安静下来。查了缓存、驱动、启动项都没有结果。最后用 Procmon 抓发现 explorer 在反复尝试访问一个 IP 地址的共享路径超时后重试重试失败再重试。顺着路径找过去桌面上有一个指向公司旧文件服务器的快捷方式那台服务器两个月前就下线了快捷方式还留在所有机器的镜像里。shell 每次刷新桌面都要去取这个快捷方式的图标取不到就等超时。删掉那个快捷方式之后问题当场消失。这个案例给我的教训是桌面上的东西越少越好尤其是那些指向外部资源的快捷方式它们每一个都是一次潜在的网络请求。4.3 案例二两套防护软件互相打架另一台机器比较典型。用户装了一套第三方安全软件系统自带的防护也没关。两套软件同时对文件系统做实时监控互相把对方的行为判定为可疑于是不停扫描、不停更新界面状态而它们的界面图标又都挂在任务栏上结果就是任务栏图标隔几秒重绘一次。处理方式不是把系统自带的防护关掉而是只保留一套。我当时的选择是卸载第三方那套因为自带的那一套和系统集成度更高出错概率更低。卸载之后重启症状消失。这里顺便说一句任何时候都建议只保留一套实时防护两套同时跑不但会引发这类界面问题还会明显拖慢磁盘性能。4.4 案例三美化工具把主题服务搞崩了第三个案例来自一个喜欢折腾桌面的朋友他装了一套第三方主题和桌面整理工具把系统图标、任务栏样式、开始菜单布局全改了一遍。症状是每隔十几秒全屏闪一下闪的时候能看到所有窗口重新绘制。查事件日志能看到主题相关的服务反复重启同时 explorer 的图标缓存被反复写坏。这类问题的排查思路很简单把所有美化类工具全部退出恢复系统默认主题观察半小时。他照做之后立刻正常之后只保留了其中一个工具问题也没再出现。第三方美化工具本身不是不能用但多个工具同时接管系统外壳冲突概率会急剧上升。4.5 排查过程中的注意事项与避坑清单一次只改一个变量。这是所有排查工作的铁律改完立刻观察别攒着一起改。命令行删缓存之前先确认当前用户身份用管理员账户去删当前用户的缓存等于没删。Autoruns 和 ShellExView 里的操作优先用禁用不用删除给自己留退路。重建缓存后第一次加载慢是正常的给它五分钟再下结论。系统文件修复的顺序是先 DISM 后 sfc反了会浪费大量时间。别急着重装系统用户配置文件损坏、驱动冲突、扩展冲突这三类问题重装之后如果软件照装问题还会回来。动手之前先建个还原点值不值得花这两分钟出问题的时候你就知道了。5. 让它别再犯日常维护里真正有用的几项设置把问题修好只是第一步如果使用习惯不变过几个月很可能再犯。下面这几项是我自己每台机器都会做的调整成本很低收益挺明显。5.1 给外壳程序减负的几项常规设置桌面文件数量要控制。桌面上每多一个图标外壳就要多维护一份图标数据和一份通知订阅几百个文件的桌面在低配机器上光是加载就要十几秒。我的习惯是把桌面当当前正在处理的三个文件的暂存区其余全部归档到别的目录快捷方式只留最常用的五六个。关掉资源管理器的快速访问自动填充。文件夹选项里取消在快速访问中显示最近使用的文件和常用文件夹这两项会持续记录和刷新在文件变动频繁的机器上是一笔不小的开销。缩略图也是个耗资源大户如果不需要看图片预览在文件夹选项的查看标签里勾上始终显示图标从不显示缩略图外壳压力会明显下降。任务栏那块也值得调。右键任务栏进设置把不用的系统图标关掉通知区域整合一下。任务栏上挂的东西越多重绘时的开销越大。如果有人遇到过任务栏不显示运行中程序的图标检查一下任务栏设置里的合并任务栏按钮选项以及通知区域的图标显示设置这两处被改过之后图标会藏起来。5.2 图标间距和视觉效果的取舍桌面上图标横向间距变大这种事八成是注册表里的间距值被改了或者分辨率、缩放比例调整之后系统换算出了奇怪的值。相关键位在HKCU\Control Panel\Desktop\WindowMetricsIconSpacing控制水平间距IconVerticalSpacing控制垂直间距单位是缇twip默认都是 -1125负号代表按字体的实际尺寸换算。把它们改回 -1125注销重新登录即可生效。改之前先把这两项导出一份备份改坏了能一键还原。视觉效果那边右键此电脑进属性高级系统设置里的性能选项我一般选调整为最佳性能然后把平滑屏幕字体边缘和显示缩略图而不是图标这两项单独勾回来。这样既保住了观感又去掉了大部分动画合成开销在集显机器上感知很明显。5.3 什么情况下该考虑重置而不是继续修有几个信号出现时继续修就不划算了。一是系统文件修复反复失败同时伴随其他不相关的异常比如设置打不开、更新装不上二是新账户里也闪并且驱动重装、扩展清理都做过三是磁盘健康度有问题用 CrystalDiskInfo 之类的工具看到重映射扇区在增长。这三条里中了两条我会建议先备份数据然后做一次就地升级或者全新安装。最后分享一个我自己的小习惯每次装完一台机器把当时的状态用系统自带的还原点功能存一个之后凡是装新软件、改驱动、动注册表之前再存一个。这类闪烁问题排查起来其实不复杂麻烦的是排查过程中把系统越改越乱最后连原来的样子都回不去了。有了还原点你随时可以退回一个已知正常的状态心里踏实很多。
返回列表