3

最初にハードディスクに保存する必要がないように、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% 動作するプログラムになっています。そのプログラムを実行できますか? どうもありがとう

4

3 に答える 3

2

私はこれを行うための明白な方法を考えることができません。私が考えることができる最も近いものはRAMディスクを使用することです-あなたはハードディスクにアクセスできません(おそらくページングを除いて)が、これはあなたが求めているものとはまだ非常に異なります。

念のために言っておきますが、私は管理対象アセンブリをロードするのではなく、任意のプログラムを実行することについて話しています。

于 2009-08-28T09:32:01.230 に答える
1

Assembly.Load(byte [])を試すことはできますが、コードアクセス許可を回避する必要がある場合があり、一部のアンチウイルスでは同様に実行できない場合があります。

于 2009-08-28T09:32:32.040 に答える
1

ここで重要なのは、バイト配列からメモリ内にアセンブリを構築/ロードすることです。を参照してください。アセンブリへの参照を取得すると、そのタイプに簡単にアクセスしてインスタンス化できます。タイプインスタンスを取得したら、そのメソッドを呼び出してプログラムを「実行」します。

于 2009-08-28T09:32:46.377 に答える