我在我的应用程序资源中嵌入了一个可执行文件。现在,我使用程序集反射来将该可执行文件提取到自己的文件中,然后使用process.Start()启动可执行文件。是否有可能直接从流中运行嵌入式可执行文件,而不是先将其写入文件?请问有什么最有效的方法可以实现这个需求?
如果它是一个 .net 可执行文件,你应该能够将其加载到一个应用程序域中,并以这种方式启动它:
http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load.aspx
byte[] bytes = File.ReadAllBytes(path);
a = Assembly.Load(bytes);
如果您不想将它保存在硬盘上,您可以考虑将其保存到 RAM 磁盘并从那里运行。
可以在不让本地EXE接触磁盘的情况下完成。
看这里...它展示了一个“进程”图像作为资源被嵌入的例子。它被读入内存,然后使用CreateProcess
和其他一些操作来构建一个有效的运行“进程”。