一、问题描述
现象:email、设置等app在任务栏中的快捷键图标透明
发现:C盘占满
过程
1、《win10任务栏图标空白的解决方案》《win10任务栏图标空白透明问题解决》:针对任务栏和系统托盘中的图标空白问题,在目录C:\Users\当前用户名\AppData\Local下(或者win+r,然后输入%localappdata%),删除iconcache.db图标缓存文件,重启explorer.exe。
2、原因总结
在 Windows 10 系统中,为了加速图标的显示,当第一次对图标进行显示时,系统会对文件或程序的图标进行缓存。之后,再次显示该图标时,系统会直接从缓存中读取数据,从而大大加快显示速度。当缓存文件出现问题时,就会引发系统图标显示不正常。因此,只需要将有问题的图标缓存文件删除掉,让系统重新建立图标缓存即可。
3、上述博客方法试用无效。
结果:发现C盘满,清理部分无用文件,图标立即恢复。
猜测:由于C盘占满,空间不足以写入缓存文件,导致部分图标未能成功写入缓存文件。
二、问题后续
1、Windows图标缓存原理
Windows中的控制面板、程序和功能、文件资源管理器都有大量的图标等,Windows从硬盘中检索所有可能的图标图像并动态渲染他们,这将消耗不少系统资源。Windows将检索到的图标信息缓存到内存中,当关机或者重新启动时,将缓存的这些信息写入到硬盘驱动器上的隐藏文件,之后不必再进行重新检索加载。
当Windows需要一个图标时,会先检查缓存,如果没有找到,然后检查可执行文件并扫描应用程序目录。关于缓存机制,可参考《Windows Internals》。
2、Windows图标缓存位置
对于Windows Vista和Windows7,图标缓存文件位于:
C:\Users\<用户名>\AppData\Local\IconCache.db
对于Windows8和Windows10,缓存图标文件位于:
C:\Users\<用户名>\AppData\Local\Microsoft\Windows\Explorer
在此目录下存在一些图标缓存文件:
iconcache_16.db
iconcache_32.db
iconcache_48.db
iconcache_96.db
iconcache_256.db
iconcache_768.db
iconcache_1280.db
iconcache_1920.db
iconcache_2560.db
iconcache_custom_stream.db
iconcache_exif.db
iconcache_idx.db
iconcache_sr.db
iconcache_wide.db
iconcache_wide_alternate.db
要重建图标缓存,需要删除出现在此目录中的所有图标缓存文件,这些文件此时都被explorer使用中,因此不能进行正常点击删除。
3、Windows图标缓存重建
- 管理员打开CMD,进入C:\Users\<用户名>\AppData\Local\Microsoft\Windows\Explorer目录;
- 打开任务管理器,结束explorer进程;
- dir命令查看目录文件,del iconcache *命令删除所有图标缓存文件,在此运行dir命令检查;
- Ctrl+Alt+Delete组合键注销,再次进入桌面。