首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过ilasm更改可执行图标

通过ilasm更改可执行图标
EN

Stack Overflow用户
提问于 2013-06-20 11:47:43
回答 1查看 750关注 0票数 2

我有一个安装程序应用程序的嵌入式.resx文件与一些信息,如服务器名称,端口,密码等.我必须为每个客户生成这个安装程序(这个过程是自动化的,并通过我们的网站完成)。这很好--我使用ildasm进行反汇编程序并替换resx文件,然后使用ilasm再次生成.exe。但是在这个过程之后,.exe失去了我们的图标,把默认的图标放在它的位置上。

我无法找到更改默认图标的方法。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-06-20 12:20:56

在C#程序中,您忽略了一个相当模糊的细节。编译器生成的可执行文件还包含非托管资源。之所以需要,是因为Windows不知道任何有关托管资源的信息。这是在Visual中可以看到的东西。使用File + Open + File并选择由.exe编译器生成的C#。RTM版本要求,它不适用于快递。

您将看到至少有3个节点用于您的程序:

  • RT_MANIFEST包含可执行文件的清单。在以后的Windows版本中非常重要的是,它声明了与UAC兼容的程序。它防止Windows将您的程序视为早期的Windows程序,当它执行UAC时需要被欺骗,例如尝试将文件写入受保护的目录,并试图在HKLM中创建注册表项。清单的内容在大多数程序中是默认的,您可以使用“”项目项目模板获得自定义内容。
  • " version“包含可执行文件的版本资源。它包含了在Windows资源管理器中查看可执行文件属性时所看到的信息。它的内容是从AssemblyInfo.cs源代码文件中的程序集:属性自动生成的。
  • “图标”包含程序的图标资源。你再也没有的那个了。

您需要使用/resource选项使ilasm.exe将这些非托管资源嵌入到修补好的可执行文件中。这需要一个.res文件,即rc.exe Windows工具生成的非托管资源的编译版本。注意如何在Project + Properties、Application选项卡、Resource file单选按钮中公开这一点。

您不能忽略此要求,您可以在没有图标资源的情况下生存,但不能使用清单,特别是在安装程序中。从原始可执行文件中提取.res文件将很困难,相当肯定的是,ildasm.exe不支持反编译它。如果像Resource这样的工具没有这样做,那么您就需要为您的程序编写create a .res file。或者回顾使用ildasm.exe来做您想做的事情的明智之处。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17212840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档