C#-在运行时将文件作为资源添加到我的Exe中
本文关键字:添加 我的 Exe 资源 运行时 文件 C#- | 更新日期: 2023-09-27 17:58:23
我发现我可以在Visual Studio 2010中将文件(*.jpg)添加到我的C#资源中。据我所知,应该可以在运行时重新组装exe。我不想自己把exe拆开。我正在寻找为我做这件事的C#例程。当然,我不想修改正在运行的exe,而是它的副本。如果我需要在运行时再次编译它,我也可以接受它将我的源代码放在我的exe中。
我的目标:
- 创建正在运行的exe的副本
- 以某种方式向该副本添加文件
- 关闭正在运行的应用程序
- 当用户执行副本时,它必须将文件作为内部资源。就是这样
编辑:目标系统提供C#编译器+Visual Studio 2010。
(我不是在编写完整的安装程序,请不要说那些脏话:"重新发明"answers"轮子",我自己就知道)
如果没有完整的编译器,您将很难以不会破坏可执行文件的方式修改资源部分。
然而,你可以做的是:
- 制作一个ZIP文件(或包含所有文件的其他归档文件)
- 将ZIP文件的内容愚蠢地附加到可执行文件的末尾
- 还要附加一个包含存档长度的int32
您可以通过从ExecutableLength - ZipLength - 4
开始为自己的可执行文件打开FileStream
并读取ZipLength
字节来读取它——这只提供了可以使用DotNetZip或其他库读取的zip部分。
然后,当您想要修改存储的数据时:
- 在运行时重命名现有可执行文件(您可以这样做)
- 读取可执行文件的第一个
ExecutableLength - ZipLength - 4
字节,并将它们写入一个新文件,该文件的名称为可执行文件重命名前的原始名称 - 在中创建包含您的信息的新ZIP存档,并将其附加
- 附加新存档长度的int32
- 关闭现有应用程序并启动新应用程序
Tadah-一个可以修改自己存储的资源的可执行文件。