以编程方式更改可执行文件的图标

Den*_*sky 12 c# windows icons taskbar windows-7

我正在开发一个名为WeatherBar的应用程序.它的主要功能是基于它与Windows 7任务栏的交互 - 它根据特定位置的天气条件更改图标.

我在应用程序中使用的图标都存储在已编译的本机资源文件(.res)中 - 我使用它而不是仅用于图标的嵌入式资源清单.默认情况下,我修改主窗体的Icon属性以相应地更改图标,只要图标未固定到任务栏,它就可以正常工作.当它被固定时,任务栏中的图标会自动切换到可执行文件的默认图标(资源文件中的索引为0).

在做了一些研究后,我发现更改图标的方法是更改​​快捷方式图标(因为所有固定应用程序实际上都是存储在用户文件夹中的快捷方式).但它没有用.

我假设我需要更改可执行文件的图标,因此使用UpdateResource,但我不完全确定.我的可执行文件未经过数字签名,因此修改它不应该是一个问题.

解决这个问题的方法是什么?

Pau*_*ams 4

如果您想以编程方式执行此操作,我将首先查看可移植可执行文件格式维基百科条目)。资源部分(.rsrc,请参阅第 6.9 节)应包含该图标。使用此信息,您可以编写一个工具来修改图标。

如果您只想快速更改现有文件中的图标,您可以在 Visual Studio 资源编辑器中对其进行修改。我通过删除旧图标并添加新图标来使用文件对此进行测试。.exe 图标在资源管理器中更改为新图标,并且当我将其拖动到“开始”菜单时,新图标出现在“开始”菜单上。

- 编辑 -

是的,我同意使用UpdateResource是一个好方法。 下面是我发现的使用 C++ 函数执行此操作的示例,以及UpdateResourceFindResource的 P/Invoke 签名。