目前有两个工具可以实现命令行修改图标
cei
https://github.com/0x546F6D/cei_-_Change_Executable_Icon
这个命令比较简单,执行如下命令即可修改图标
cei icon.ico my.exe new.exe
但是不支持在windows 7系统上运行
ResourceHacker
http://www.angusj.com/resourcehacker/
ResourceHacker有两种语法格式
- 命令方式
ResourceHacker.exe -open winsw-x64.exe -saveas winsw-x64.exe -action addoverwrite -res logo.ico -mask ICONGROUP,MAINICON,0
- 脚本方式
创建文件icon.txt,内容如下
[FILENAMES]
Exe= WinSW-x64.exe
SaveAs= WinSW-x64.exe
[COMMANDS]
-addoverwrite logo.ico, ICONGROUP,MAINICON,0
然后执行命令
ResourceHacker.exe -script icon.txt
ResourceHacker.exe在执行的时候会立即退出在后台运行,不会等待执行完再返回,这点需要注意。
在CI/CD或批处理中如果需要等待ResourceHacker执行完成则可以使用powershell中的start-process命令,如下:
start-process resourcehacker -argumentlist "-open old.exe -saveas new.exe -action addoverwrite -res logo.ico -mask ICONGROUP,MAINICON,0" -Wait -PassThru
如果是cmd则可以用start命令,具体用法可以参考相关资料。
关于icon文件的生成可以用这个网站
https://convertio.co/zh/
重建图标缓存
修改图标后在资源管理器有可能看到的还是旧的图标,这时候需要重建图标缓存。
使用 IE4uinit 刷新 Windows 上的图标缓存
在Windows中有一个内置工具 ie4uinit (IE每用户初始化实用程序),可用于快速重置图标缓存数据库。
在 Windows 10 上: ie4uinit.exe -show
在 Windows 7 上: ie4uinit.exe -ClearIconCache
ie4uninit.exe执行后需要重启explorer.exe进程或重启电脑。
也可以用如下批处理:
taskkill /f /im explorer.exe
cd /d %userprofile%\AppData\Local\Microsoft\Windows\Explorer
attrib –h iconcache_*.db
del /f IconCache*
del /f thumbcache*
cd /d %userprofile%\AppData\Local\
attrib –h IconCache.db
del /f IconCache.db
start C:\Windows\explorer.exe