在工作中遇到了个问题,把产品的资源ICON换了一个图标,但是编译出来的产物图标还是旧的,并没有更新,但是通过stud_PE查看文件资源,图标确实已经是最新的了,但是为什么看到的图标还是旧的,查了资料发现windows系统是有图标缓存,可以运行以下脚本刷新缓存
@echo off
taskkill /f /im explorer.exe
cd /d %userprofile%\AppData\Local\Microsoft\Windows\Explorer
del iconcache*
start explorer.exe
exit
但是如果是产品新版本更新图标,替换用户的桌面的快捷方式后,图标依然是旧的也不能用上面的方法处理,因为上面的方法需要杀掉文件管理器,经过实际验证可以使用以下的方法
#include <windows.h>
#include <shlobj.h>
int main() {
// 刷新桌面图标
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSHNOWAIT, NULL, NULL);
return 0;
}