通过ilasm更改可执行图标

2023-12-22

我有一个安装程序应用程序,其中嵌入了 .resx 文件,其中包含一些信息,例如服务器名称、端口、密码等... 我必须生成这个安装程序(这个过程是自动化的,并通过我们的网站完成)对于每个客户。这工作正常 我用ildasm用于反汇编程序并替换 resx 文件,然后我使用ilasm再次制作.exe。 但在此过程之后,.exe 丢失了我们的图标,取而代之的是默认图标。

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

Thanks


您错过了 C# 程序中一个相当晦涩的细节。编译器生成的可执行文件还包含不受管理的资源。必需的,因为 Windows 不了解有关托管资源的任何信息。您可以使用 Visual Studio 看到这一点。使用“文件”+“打开”+“文件”并选择由 C# 编译器生成的 .exe。需要 RTM 版本,它不适用于 Express。

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

  • RT_MANIFEST 包含可执行文件的清单。Very对于以后的 Windows 版本很重要,它声明该程序与 UAC 兼容。它可以防止 Windows 将您的程序视为早期的 Windows 程序(在执行 UAC 时需要对其进行欺骗)verboten例如尝试将文件写入受保护的目录以及尝试在 HKLM 中创建注册表项等。清单的内容是大多数程序中的默认内容,您可以使用“应用程序清单文件”项目项模板获取自定义清单。

  • “版本”包含可执行文件的版本资源。它包含您使用 Windows 资源管理器查看可执行文件的属性时看到的信息。其内容是根据 AssemblyInfo.cs 源代码文件中的 [assemble:] 属性自动生成的。

  • “图标”包含您的程序的图标资源。那个你已经不再拥有的人了。

您需要使用 ilasm.exe 的 /resource 选项将这些非托管资源嵌入到已修补的可执行文件中。这需要一个 .res 文件,即非托管资源的编译版本,由 rc.exe Windows SDK 工具生成。请注意,这也是如何在“项目 + 属性”、“应用程序”选项卡、“资源文件”单选按钮中公开的。

你不能忽视这个要求,你可以没有图标资源,但不能没有清单,尤其不在安装程序中。从原始可执行文件中获取 .res 文件将会很困难,相当肯定 ildasm.exe 不支持反编译它。如果像 Resource Hacker 这样的工具不能做到这一点,那么您需要创建一个 .res 文件 https://stackoverflow.com/a/8914810/17034为您的程序。或者回顾一下使用 ildasm.exe 来做您想做的事情的智慧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过ilasm更改可执行图标 的相关文章

  • Mono C# 获取应用程序路径

    我正在寻找我的应用程序的目录 它似乎与常规 c 不同 As in Path GetDirectoryName Application ExecutablePath 不管用 一种正确的跨平台解决方案是 Path GetDirectoryNam
  • System.Drawing.dll / NumericUpDown 的 .NET 访问冲突异常

    我遇到了一个非常愚蠢的问题 我已经尝试完全重新安装 NET 但它没有解决问题 我什至无法通过谷歌搜索找到其他有同样问题的人 就在我的计算机上 如果我将 NumericUpDown 控件添加到 NET 项目中的窗体并运行该应用程序 则在运行该
  • 通过 WCF 提供类对象的数组或列表

    任何提供自定义类对象列表或数组的 WCF 客户端服务器示例都会对我有所帮助 但这是我到目前为止所得到的 这是我想提供的班级系统 namespace NEN Server FS Serializable public class XFS pr
  • JPG、DOC、PDF 等文件是否也编译成程序集?

    Q1 Does aspnet compiler exe将网站目录中包含的所有文件 甚至 JPG DOC 和 PDF 类型 编译成程序集 如果将图像添加到Web项目中的文件列表中 从而将它们添加到项目文件中 这些图像也会被VS编译成程序集吗
  • 在 C# 中将 Exe 文件作为嵌入式资源运行

    我有一个第 3 方 EXE 我只需要从我的 C 应用程序运行它 我的主要目标是对我的 C 文件中的第 3 方可执行文件进行版权保护 有没有更好的方法来做到这一点 我怎样才能做到这一点 首先将嵌入的可执行文件作为资源文件添加到您现有的资源文件
  • 通过模板参数向类添加方法

    我希望在类中拥有一个模板参数特定函数 取消启用enable if 它的名称保持不变 参数类型有所不同 尽管这应该不相关 因为只有一个被初始化 enum class MyCases CASE1 CASE2 template
  • 如何将外部文件添加到应用程序文件(clickonce / .NET)

    我在用着 发布 vs2008 中的选项 我很高兴它的工作原理 现在我想添加 2 个外部 exe 文件到已安装的包中我注意到按钮 应用程序文件 在发布选项卡上 但似乎不允许手动添加新文件 我已经玩过这个并找到了存档的方法 1 将EXE文件作为
  • 如何在类中使用常量类变量声明常量数组?

    如何在类中使用常量类变量声明常量数组 是否可以 我不想要动态数组 我的意思是这样的 class test const int size int array size public test size 50 int main test t 5
  • 将模型和订阅密钥传递给 LuisDialog,而不是通过属性

    我正在编写一个可以说两种语言的机器人 因此 我需要使用两个单独的 LUIS 应用程序 每种语言一个 Bot Framework 中的 LuisDialog 是这样初始化的 来自 Microsoft 的示例 LuisModel c413b2e
  • WebProxy 错误:需要代理身份验证

    我使用以下代码从互联网获取html数据 WebProxy p new WebProxy localproxyIP 8080 true p Credentials new NetworkCredential domain user passw
  • CLR 程序集不会在 64 位 SQL Server 2005 中加载

    我们在安装 SQL Server 2005 32 位 时使用带有一些用户定义函数的程序集 我们使用如下脚本将其部署到生产环境 CREATE ASSEMBLY Ourfunctions AUTHORIZATION dbo FROM 0x4D5
  • 在异步方法中显示错误消息的更好方法

    事实上我们不能使用await关键字在catch块使得在 WinRT 中显示来自异步方法的错误消息变得非常尴尬 因为MessageDialogAPI 是异步的 理想情况下我希望能够这样写 private async Task DoSometh
  • 为什么%c前面需要加空格? [复制]

    这个问题在这里已经有答案了 下面的代码一编译就给出了奇怪的o p main char name 3 float price 3 int pages 3 i printf nEnter names prices and no of pages
  • UWP 关闭信息亭模式

    我有一个发布到 Windows 应用商店的 UWP 应用程序 并且该应用程序可以启动进入信息亭模式 分配访问权限 它工作得很好 但我尝试在应用程序上创建一个按钮来关闭信息亭模式并返回到 Windows 登录屏幕 我尝试了文档中给出的代码 h
  • 按下按钮时更改几何绘图画笔的颜色

    我创建了一个按钮模板 有一个图像和一个标签 图像的来源位于 ResourceDictionary Pictures 中 图片的来源是具有白色画笔颜色的 DrawingImage
  • 在 C++ 中的 Switch-Case 中执行 OR 运算

    你会如何在 C 中做到这一点 例如 如果用户按 ESC 或 q 或 Q 我试图触发程序退出 我尝试寻找它 但在 C 中没有找到它的语法 我知道如何使用 if else 来做到这一点 但是可以使用 switch case 来做到这一点吗 当然
  • 非静态类中的静态方法有什么意义?

    我无法理解以下代码的潜在错误 class myClass public void print string mess Console WriteLine mess class myOtherClass public static void
  • Oracle DataAccess 相关:“动态程序集中不支持调用的成员。”

    据我了解 此类错误已在 SO 上讨论过多次 有些人认为这是 DLL 文件中的错误 有些人通过更改 DLL 版本来解决 其他人似乎没有任何线索 无论如何 我只是发帖试试运气 在 C GUI 上的网格中选择一行时 我的应用程序崩溃了 stack
  • ASP.NET 中的 ThreadStaticAttribute

    我有一个需要存储的组件static每个线程的值 它是一个通用组件 可以在许多场景中使用 而不仅仅是在 ASP NET 中 我想用 ThreadStatic 属性来实现我的目标 假设它在 ASP NET 场景中也能正常工作 因为我假设每个请求
  • 在 C++ 中,将 float 转换为 double 再转换回 float 是否给出相同的值

    假设在下面的代码中 float f1 double d1 static cast

随机推荐

  • 来自 NSAttributedString 的 HTML

    我需要将 HTML 转换回 HTML 而不是将其转换为属性字符串 这可以在 Mac 上轻松完成 如下所示 http www justria com 2011 01 18 how to convert nsattributedstring t
  • 如何浏览 iPhone 图片库中的图片?

    我是ios开发新手 我正在做一个照片裁剪应用程序 我想通过单击浏览按钮 我在应用程序中添加 来浏览 iPhone 图片库中的图像 并将其加载到我放置在视图中的 UIImageview 如何浏览图像 是否可以浏览完整的手机内存 就像 asp
  • Firebase、Swift:向给定设备令牌的特定用户发送推送通知

    我有一个 Firebase Swift 聊天应用程序 我想在其中向特定用户发送推送通知 我已经捕获并可以访问用户的设备令牌 所有参考文献都提到必须有一个 网络应用程序 来管理这个 但我还没有找到任何具体的例子 是否需要有一个 Web 应用来
  • GKTurnBasedEventListener 无法设置为我的 ViewController 的委托?

    在 objC 中 语法由拉温德里奇 https www raywenderlich com 5509 beginning turn based gaming with ios 5 part 2 for GKTurnBasedEventLis
  • Eclipse 中针对 JavaScript 代码的“缺少分号”警告

    对于以下代码的第 4 行 Eclipse 向我发出警告 缺少分号 const C b function foo alert x 它不适用于以下代码 const C b function foo alert x 对于以下内容 它给了我两个警告
  • 如何动态为 FullCalendar 事件分配颜色

    我正在尝试在 FullCalendar 可选演示中实现一项功能 该功能使用户能够使用 HTML 颜色选择器动态更改每个新日历事件的颜色 用户应该能够为每个事件选择唯一的颜色 例如 在当前设置中 生成的第一个事件采用颜色选择器中选择的任何颜色
  • 在 Spring Batch 项目中实现 ItemReader 时如何打开 Reader?

    在 Spring Batch 项目中 我需要用多行组成一条记录 我正在实施ItemReader在返回对象之前累积多行 在完成了几个示例项目之后 我将其拼凑在一起 但我面临着ReaderNotOpenException 我已经三次检查文件的路
  • 电子邮件确认不存储 Django allauth

    我正在使用 Django allauth 和 django rest auth 我通过电子邮件确认实现了身份验证 但现在我意识到它不能完全正常工作 因为我没有在数据库中存储发送电子邮件确认 在管理中看不到它们 电子邮件确认正在按应有的方式发
  • Pandas:根据另一列中的值对两列进行分组

    我对 python pandas 很陌生 我有一个看起来像这样的数据框 id name color id 1 alex blue id 2 james yellow id 1 sara black id 4 dave pink id 4 l
  • 使用反射将字符串转换为 Nullable

    如何使用反射将字符串转换为可空值 我有以下代码可以将几乎任何值转换为几乎任何值类型 上面有相当多的代码使用 IsAssignableFrom 等 所以这是最后的手段 MethodInfo parse t GetMethod Parse ne
  • 取消注册通过清单注册的广播接收器

    是否可以注销BroadcastReceiver已通过清单注册 另请告诉我是否可以忽略BroadcastReceiver 无需进行任何代码更改 因为这样BroadcastReceiver现在对我来说没有用了 谢谢 您可以使用以下代码禁用接收器
  • 如何通过代码注册一个Spring ApplicationListener实现?

    我有一个 Spring 的实现ApplicationListener 当它在上下文 xml 文件中声明为 bean 或如果我使用时 它工作正常并接收事件 Component注解 但是 如果我使用以下代码通过代码手动注册它 它不会接收事件Co
  • Java:println中的布尔值(布尔值?“打印真”:“打印假”)[重复]

    这个问题在这里已经有答案了 我遇到了这个语法 System out println boolean variable print true print false 这个带有两个点 的语法是什么 我在哪里可以找到相关信息 它只适用于布尔值还是
  • C、套接字:连接被拒绝错误

    我有一个数据采集模块 我想从中收集以太网端口的数据 我正在一步步到达那里 目前我只想connect从客户端到服务器 我使用 Beej 的指南来获取基本的 C 代码 但我不断收到此连接错误connect Connection refused
  • 以编程方式更改 WPF TextBox 中的验证规则

    我有一个如下定义的文本输入区域
  • 如何创建虚拟 Windows 驱动器

    我正在尝试创建一个 Windows 虚拟驱动器 如 c 来映射远程存储 主要目的是以用户清楚的方式做到这一点 因此 用户不会知道他正在从另一个站点写入 读取 我正在寻找可用的产品 我发现FUSE在Windows中不是一个选项 而WebDAV
  • 如何为 hadoop 2.0 编译/使用 mahout?

    最新版本的 Mahout 0 9 仅基于 hadoop 1 x 构建 mvn 干净安装 如何为 hadoop 2 0 x 编译 mahout 因为当我运行命令时 hadoop jar mahout examples 0 9 SNAPSHOT
  • 如何使用可变大小的缓冲区获取c类型结构中字段的值?

    import readboard import struct import ctypes as c def readbuffer data size struct unpack
  • 碰撞检测/从 ArrayList 中删除对象

    我目前正在尝试测试下落物体和盒子之间的碰撞 我了解基本的碰撞检测 但我的问题是我必须测试它是否有无限数量的下落物体 当这些对象 blossoms 被创建时 它们被存储在一个ArrayList中 ArrayList 处理画布上对象的绘制 使用
  • 通过ilasm更改可执行图标

    我有一个安装程序应用程序 其中嵌入了 resx 文件 其中包含一些信息 例如服务器名称 端口 密码等 我必须生成这个安装程序 这个过程是自动化的 并通过我们的网站完成 对于每个客户 这工作正常 我用ildasm用于反汇编程序并替换 resx