Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过ilasm更改可执行图标_C#_.net_Vb.net_Embedded Resource - Fatal编程技术网

C# 通过ilasm更改可执行图标

C# 通过ilasm更改可执行图标,c#,.net,vb.net,embedded-resource,C#,.net,Vb.net,Embedded Resource,我有一个带有嵌入式.resx文件的安装程序应用程序,其中包含一些信息,如服务器名称、端口、密码等。。。 我必须生成这个安装程序这个过程是自动化的,并通过我们的网站为每个客户完成。这很好用 我将ildasm用于反汇编程序并替换resx文件,然后再次使用ilasm生成.exe。 但是在这个过程之后.exe丢失了我们的图标,将默认的图标放在它的位置上 我找不到更改默认图标的方法 谢谢您错过了C程序中一个相当模糊的细节。编译器生成的可执行文件还包含非托管资源。必需,因为Windows对托管资源一无所知。

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

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


谢谢

您错过了C程序中一个相当模糊的细节。编译器生成的可执行文件还包含非托管资源。必需,因为Windows对托管资源一无所知。这是您可以通过VisualStudio看到的。使用File+Open+File并选择由C编译器生成的.exe。RTM版本是必需的,它不适用于Express

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

RT_清单包含可执行文件的清单。在以后的Windows版本中非常重要,它声明程序与UAC兼容。它可以防止Windows将您的程序视为早期的Windows程序,当它尝试将文件写入受保护的目录和尝试在HKLM中创建注册表项时,需要对该程序撒谎。清单的内容是大多数程序中的默认内容,您可以使用应用程序清单文件项目项模板获取自定义清单

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

图标包含程序的图标资源。你不再拥有的那个

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


你不能忽视这个要求,你可以不使用图标资源,但不能使用清单,尤其是在安装程序中。从原始可执行文件中取出.res文件将是一件困难的事情,可以肯定的是ildasm.exe不支持对其进行反编译。如果像资源黑客这样的工具不能做到这一点,那么您需要为您的程序提供支持。或者回顾一下使用ildasm.exe做你想做的事情的智慧。

你错过了C程序中一个相当模糊的细节。编译器生成的可执行文件还包含非托管资源。必需,因为Windows对托管资源一无所知。这是您可以通过VisualStudio看到的。使用File+Open+File并选择由C编译器生成的.exe。RTM版本是必需的,它不适用于Express

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

RT_清单包含可执行文件的清单。在以后的Windows版本中非常重要,它声明程序与UAC兼容。它可以防止Windows将您的程序视为早期的Windows程序,当它尝试将文件写入受保护的目录和尝试在HKLM中创建注册表项时,需要对该程序撒谎。清单的内容是大多数程序中的默认内容,您可以使用应用程序清单文件项目项模板获取自定义清单

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

图标包含程序的图标资源。你不再拥有的那个

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


你不能忽视这个要求,你可以不使用图标资源,但不能使用清单,尤其是在安装程序中。从原始可执行文件中取出.res文件将是一件困难的事情,可以肯定的是ildasm.exe不支持对其进行反编译。如果像资源黑客这样的工具不能做到这一点,那么您需要为您的程序提供支持。或者回顾一下使用ildasm.exe做你想做的事情的智慧。

谢谢Hans,很遗憾我没有时间听你的指示。这很有趣,因为直到现在安装程序运行正常。但再次感谢你,我会尽快跟进。有时我希望如此
s将被迫记录其产品名称。所以我们知道要避免它。请结束你的问题,听起来你对真正的答案不感兴趣。我当然感兴趣。但我在同一个项目中还有其他优先事项。。。无论如何,谢谢你,我很感激。但是,如你所愿,先生……谢谢你,汉斯,不幸的是我没有时间听你的指示。这很有趣,因为直到现在安装程序运行正常。但再次感谢您,我会尽快跟进。有时我希望这样,用户将被迫记录他们的产品名称。所以我们知道要避免它。请结束你的问题,听起来你对真正的答案不感兴趣。我当然感兴趣。但我在同一个项目中还有其他优先事项。。。无论如何,谢谢你,我很感激。但是,如你所愿,先生。。。