【问题标题】:Is it possible to change a exe's icon without recompiling it?是否可以在不重新编译的情况下更改 exe 的图标?
【发布时间】:2010-05-03 18:14:26
【问题描述】:

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

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

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

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

问候, 微内核

【问题讨论】:

    标签: c++ c winapi file-format


    【解决方案1】:

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

    【讨论】:

    • 我使用 Resource Hacker 更改了自解压 7-Zip 存档的图标。
    【解决方案2】:

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

    也可以使用UpdateResource API 和相关函数来编写资源。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2011-12-27
          • 1970-01-01
          • 2020-06-01
          • 2010-09-07
          • 1970-01-01
          • 1970-01-01
          • 2020-03-13
          • 1970-01-01
          • 2013-06-06
          相关资源
          最近更新 更多