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

问题描述 投票:0回答:5

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

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

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

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

问候, 微内核

c++ c winapi file-format
5个回答
9
投票

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


5
投票

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

也可以使用 UpdateResource API 和相关函数来完成资源的写入。

您应该记住,更改其他人的 EXE 文件的资源将使任何签名无效。此外,依赖操作系统资源是有风险的——众所周知,Windows 会在没有警告的情况下删除资源(因为它们没有记录)。复制资源可能也不合法(尽管 IANAL)。


1
投票

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


0
投票

这是可以做到的。 IIRC,Microangelo 图书馆员 可以做到这一点。


0
投票

是的,现在在rcedit

的帮助下完全有可能
rcedit "path-to-exe-or-dll" --set-icon "path-to-ico"
© www.soinside.com 2019 - 2024. All rights reserved.