假设无盘状况,我如何(在Java中)从内存中解压缩的exe(以及相应的支持文件)创建进程?
我已经看到解压缩到内存here和here但是找不到从byte []或InputStream创建进程的方法,即没有(filesystem)命令字符串。
想法是在Java应用程序/项目中捆绑第三方组件,而不允许它独立使用,因此将其捆绑在受密码保护的Zip中。在我的程序执行期间,它将解压缩到内存(exe +支持文件)并为后面的OutputStream写入做好准备,如:
Process process = ?
OutputStream output = process.getOutputStream();
...
output.write("my commmand to 3rd party component");
任何提示?
提前致谢,
答案 0 :(得分:0)
我可以看到几种可能的方法:
在这两者中,第一部分可能需要较少的工作。
答案 1 :(得分:0)
Windows要求进程映像驻留在操作系统可见的文件系统上。这意味着您需要具有解压缩EXE的“磁盘”(确切地说,是内核模式驱动程序公开的系统范围的可见文件系统)。
我们提供了几种产品,可用于创建适合从中启动EXE的虚拟文件系统,但在所有这些产品中,都需要安装内核模式驱动程序。这就是Windows的设计工作方式。
因此,仅仅从流中运行本机EXE(以PE格式)将不起作用。 .NET程序集可以在内存中加载,也可以使用Java运行时功能从任何地方加载Java类,但对于本机进程则不然。