例如,我从dataBase下载EXE或MSI文件作为字节数组。我想运行它。我可以将它保存在文件中,然后保存在Process.Start(路径)中。但是,如果我不想创建一个真实的文件,我可以从例如Assembly进行相同的操作吗?
非常感谢!
答案 0 :(得分:4)
如果字节数组是.NET程序集,则可以将Assembly.Load与字节数组一起使用,然后使用反射来处理程序集中包含的类型。这article demonstrates the technique。
这会将其直接加载到您的流程中,因此它就像引用的程序集一样。
但是,如果文件是本机可执行文件,则不起作用 - 将需要另一种技术。就个人而言,此时,我会将其保存到磁盘并执行。但是,有使用CreateProcess and inspecting the Process Environment Block的方法。但是,这可能需要C#中的不安全代码与P / Invoke混合才能正常工作。
答案 1 :(得分:0)
哦,顺便说一句,MSI不能直接执行。它必须保存到磁盘并通过msiexec调用。
至于其他人,请准确考虑您要做的事情。如果你必须解决一般情况,你将把它们写入磁盘并执行它们。