如何执行MemoryStream中的程序,这样我就不必先将其保存到硬盘中。该文件可能无法保存到硬盘上。该程序必须在内存中100%正常运行。
static string strTemplate = "MyAPP.SOMEprogram.exe";
byte[] template;
int len = 0;
Assembly assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream(strTemplate))
{
len = (int)stream.Length;
BinaryReader reader = new BinaryReader(stream);
template = reader.ReadBytes(len);
}
MemoryStream ms = new MemoryStream(template, true);
现在MemoryStream(在RAM上)的所有100%工作程序,我可以执行该程序吗? 非常感谢
答案 0 :(得分:2)
我想不出一个明显的方法来做到这一点。我能想到的最接近的是使用RAM光盘 - 你将没有硬盘访问(除了可能是分页),但这仍然与你所要求的完全不同。
请注意,我说的是运行任意程序,而不是加载托管程序集。
答案 1 :(得分:1)
您可以尝试Assembly.Load(byte[]),但您可能需要解决代码访问权限问题,而某些防病毒软件可能也不允许您这样做。
答案 2 :(得分:1)
这里的关键是从字节数组see在内存中构建/加载程序集。一旦有了对程序集的引用,就可以轻松访问其类型并实例化它们。一旦你有了类型实例,就在它上面调用一个方法来“运行”你的程序。