我的应用资源中嵌入了可执行文件。 ATM我使用程序集反射将可执行文件提取到自己的文件,然后使用进程START()启动执行程序。是否可以直接从流中运行嵌入式可执行文件而不是先将其写入文件?请有人请告诉我最有效的方法。
答案 0 :(得分:8)
以下是我从您的问题中收集的内容以及您的意见:
答案是:是
然而,对此的答案也是非常,非常,很难
你需要做的是,并注意我不知道所有细节,因为我不这样做,但无论如何:
我假设你的问题是“我可以做1和8”,答案是不。
答案 1 :(得分:4)
如果它是.net可执行文件,您应该能够将其加载到appdomain中并以此方式启动:
http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load.aspx
答案 2 :(得分:3)
实际上非常简单:
byte[] bytes = File.ReadAllBytes(path);
a = Assembly.Load(bytes);
现在不是从文件中读取字节,而是从资源中读取它,然后就完成了。实际上有一篇非常好的文章:Dynamically Loading Embedded Resource Assemblies
答案 3 :(得分:1)
如果您不想在硬盘上使用它,可以将其保存到ram驱动器,然后从那里运行。
答案 4 :(得分:0)
可以在没有您的原生EXE必须触摸磁盘的情况下完成。
请参阅此处....它显示了作为资源嵌入的“流程”图像的示例。它被读入内存,然后CreateProcess
以及许多其他事情来构建一个有效的运行“进程”。