是否可以在不编译的情况下更改exe图标?

时间:2010-05-03 18:14:27

标签: c++ c winapi file-format

我有很多可执行文件,我已编译(很久以前),其中许多我现在没有源代码。但是当我编译它们时,我没有为它们添加任何图标,所以它们看起来都像是一个沉闷,光头的默认图标。所以我的问题是,

(1)我是否可以编写一个可以更改exe资源部分并更改其外观的软件?如果是这样,任何人都可以指向我解释的位置吗? (我是初学者,我不知道exe格式和所有) 还有一点很有趣的是不断改变图标而不必为了改变图标而重新编译所有内容......

(2)这引发了一个自然的反向问题,是否同样可以消除某些文件使用的图标并将其用于其他文件? (如果是这样,请将我指向可以获取详细信息的位置。

我是C / C ++开发人员,我正在寻找Windows平台上的解决方案......

此致 微内核

4 个答案:

答案 0 :(得分:9)

用于可执行文件的图标只是EXE文件中遇到的第一个ICON资源。您可以使用ResHack之类的工具从现有二进制文件中提取图标,并且(我认为)您还可以使用它来更改附加到特定资源的图标。

答案 1 :(得分:5)

可以从exe或DLL文件读取和写入资源。读取资源很简单(ish) - 只需使用LoadLibraryEx(LOAD_AS_DATA_FILE)加载它,然后就可以使用标准资源API枚举资源。所有这些都记录在MSDN上。

也可以使用UpdateResource API及相关功能来编写资源。

您应该记住,虽然更改某些人的资源EXE文件将使任何签名无效。此外,取决于操作系统资源是有风险的 - 已知窗口在没有警告的情况下删除资源(因为它们没有记录)。复制资源也可能不合法(尽管IANAL)。

答案 2 :(得分:1)

据我所知,您可以在Visual Studio中打开EXE文件并编辑实时EXE文件中的资源。

答案 3 :(得分:0)

可以这样做。 IIRC,Microangelo Librarian可以做到这一点。

相关问题