将程序集作为进程运行

本文关键字:进程 运行 程序集 | 更新日期: 2023-09-27 18:17:33

例如,我从数据库下载一个EXE或MSI文件作为字节数组。我想运行它。我可以把它保存在一个文件中,然后再Process.Start(path)。但是,如果我不想创建一个真正的文件,我可以从,例如,Assembly中做同样的事情吗?

非常感谢!

将程序集作为进程运行

如果字节数组是。net程序集,则可以使用程序集。使用字节数组加载,然后使用反射处理程序集中包含的类型。本文将演示该技术。

这会将它直接加载到您的进程中,因此它就像一个引用的程序集一样工作。

如果文件是本机可执行文件,那么这将不起作用——将需要另一种技术。就我个人而言,在这一点上,我会将它保存到磁盘并执行。然而,也有使用CreateProcess和检查进程环境块的方法。然而,这可能需要c#中的不安全代码与P/Invoke混合才能正常工作。

哦,顺便说一下,MSI不是直接可执行的。它必须保存到磁盘上,并通过msiexec调用。

至于其他的,考虑你到底想要做什么。如果您必须解决一般情况,您将把它们写入磁盘并执行它们。