从MemoryStream执行程序

时间:2009-08-28 09:24:36

标签: c# execute memorystream

如何执行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%工作程序,我可以执行该程序吗? 非常感谢

3 个答案:

答案 0 :(得分:2)

我想不出一个明显的方法来做到这一点。我能想到的最接近的是使用RAM光盘 - 你将没有硬盘访问(除了可能是分页),但这仍然与你所要求的完全不同。

请注意,我说的是运行任意程序,而不是加载托管程序集。

答案 1 :(得分:1)

您可以尝试Assembly.Load(byte[]),但您可能需要解决代码访问权限问题,而某些防病毒软件可能也不允许您这样做。

答案 2 :(得分:1)

这里的关键是从字节数组see在内存中构建/加载程序集。一旦有了对程序集的引用,就可以轻松访问其类型并实例化它们。一旦你有了类型实例,就在它上面调用一个方法来“运行”你的程序。

相关问题