VS+QT 修改exe图标后不更新
在coding时,一位同事突然询问在VS+QT生成exe程序已经设置图标情况下,修改exe图标后不更新情况,在经过实际尝试后,确实出现该情况,故查找相关问题的资料,最终找到问题原因与解决方法,在此进行记录,方便后续同情况问题出现与解决。
1、前言
在coding时,一位同事突然询问在VS+QT生成exe程序已经设置图标情况下,修改exe图标后不更新情况,在经过实际尝试后,确实出现该情况,故查找相关问题的资料,最终找到问题原因与解决方法,在此进行记录,方便后续同情况问题出现与解决。
环境:Win11系统,VS2017,Qt5.12
2、问题原因
先说找到的问题原因:这是WINDOWS系统图标缓存造成的,对图标使用了缓存的方法来加快显示速度;所以,在相同路径下相同名字和格式的文件,就会采用第一次生成(或者拷贝过来的文件)的图标来显示;只要路径、名字、格式等任何一个变了,系统就会认为是新的文件来显示图标并保存这个文件的图标。
3、解决方法
修改文件所在路径,修改文件名等都可实现图标的更新,但一旦改为原来的名字,则又会变回之前的旧图标,而删除 IconCache_.db 文件的方法与批处理命令的方法实际差不多(批处理命令实际上是通过批处理命令方式去删除 IconCache_.db 文件),所以在这里只介绍批处理命令方法
将以下命令复制,并添加到新建的文本文件中,保存并退出文件,将新建的文本文件重命名为“图标缓存清理.bat”,双击运行bat批处理脚本即可。
rem 关闭Windows外壳程序explorer
taskkill /f /im explorer.exe
rem 清理系统图标缓存数据库
attrib -h -s -r "%userprofile%\AppData\Local\IconCache.db"
del /f "%userprofile%\AppData\Local\IconCache.db"
attrib /s /d -h -s -r "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\*"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\iconcache_32.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\iconcache_96.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\iconcache_102.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\iconcache_256.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\iconcache_1024.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\iconcache_idx.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\iconcache_sr.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_32.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_96.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_102.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_256.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_1024.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_idx.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_sr.db"
rem 清理 系统托盘记忆的图标
echo y|reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v IconStreams
echo y|reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v PastIconsStream
rem 重启Windows外壳程序explorer
start explorer
这段批处理文件会删除 IconCache_.db 文件,同时还清理 thumbcache_.db 文件和注册表中的 IconStreams、PastIconsStream 两个值。清理速度很快,除了会重启一下资源管理器外没有副作用。
在运行批处理脚本后,在清理,并重新生成程序即可得到更新图标的exe程序。
4、感谢
经过多方查阅,最终在这位大佬的文章中,确定了问题所在
图标显示不正常?试试强制刷新 Windows 图标缓存
https://sspai.com/post/42874在使用大佬原本的批处理脚本后,问题仍旧存在,但结合大佬文章中的方法一,推测原因可能在
%userprofile%\AppData\Local\Microsoft\Windows\Explorer\
路径下的iconcache_*.db相关文件上,所以,我修改了批处理脚本,增加了删除 iconcache_*.db相关文件的命令后,成功解决问题。
最后
感谢以上几位大佬的文章提供大致的解决方案,本文章为本人在遇到该问题时查找的本机可行的解决方案,不一定适用其他机器,如有问题,还望指正。
更多推荐



所有评论(0)