C#-在运行时将文件作为资源添加到我的Exe中

本文关键字:添加 我的 Exe 资源 运行时 文件 C#- | 更新日期: 2023-09-27 17:58:23

我发现我可以在Visual Studio 2010中将文件(*.jpg)添加到我的C#资源中。据我所知,应该可以在运行时重新组装exe。我不想自己把exe拆开。我正在寻找为我做这件事的C#例程。当然,我不想修改正在运行的exe,而是它的副本。如果我需要在运行时再次编译它,我也可以接受它将我的源代码放在我的exe中。

我的目标:

  1. 创建正在运行的exe的副本
  2. 以某种方式向该副本添加文件
  3. 关闭正在运行的应用程序
  4. 当用户执行副本时,它必须将文件作为内部资源。就是这样

编辑:目标系统提供C#编译器+Visual Studio 2010。


(我不是在编写完整的安装程序,请不要说那些脏话:"重新发明"answers"轮子",我自己就知道)

C#-在运行时将文件作为资源添加到我的Exe中

如果没有完整的编译器,您将很难以不会破坏可执行文件的方式修改资源部分。

然而,你可以做的是:

  • 制作一个ZIP文件(或包含所有文件的其他归档文件)
  • 将ZIP文件的内容愚蠢地附加到可执行文件的末尾
  • 还要附加一个包含存档长度的int32

您可以通过从ExecutableLength - ZipLength - 4开始为自己的可执行文件打开FileStream并读取ZipLength字节来读取它——这只提供了可以使用DotNetZip或其他库读取的zip部分。

然后,当您想要修改存储的数据时:

  • 在运行时重命名现有可执行文件(您可以这样做)
  • 读取可执行文件的第一个ExecutableLength - ZipLength - 4字节,并将它们写入一个新文件,该文件的名称为可执行文件重命名前的原始名称
  • 在中创建包含您的信息的新ZIP存档,并将其附加
  • 附加新存档长度的int32
  • 关闭现有应用程序并启动新应用程序

Tadah-一个可以修改自己存储的资源的可执行文件。