6

重複の可能性:
EXE ファイルを読み込み、C# を使用してメモリから実行する

WebClient クラスを使用して、Web サーバーから .exe をダウンロードしています。最初にディスクに保存せずに .exe を実行する方法はありますか?

完全を期すために、私がこれまでに持っているものをお見せしましょう。

ダウンロードを開始するために使用するコードは次のとおりです。

WebClient webClient = new WebClient();
webClient.DownloadDataCompleted += new DownloadDataCompletedEventHandler(webClient_DownloadDataCompleted);
webClient.DownloadDataAsync(new Uri("http://www.somewebsite.com/calc.exe"));

(webClient_DownloadDataCompleted) メソッドでは、パラメーター e からバイトを取得するだけです。

private void webClient_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
{
    Byte[] downloadedData = e.Result;
    // how to run this like a .exe?
}

ありがとうございました。

4

2 に答える 2

2

.exe.NET プログラムの場合は、アセンブリを読み込んで、そのエントリ ポイントを実行できます。

それ以外の場合、それを行う方法はありますが、ファイルを一時ディレクトリに保存してそこから実行するという問題は見られません。

于 2013-01-07T19:06:34.173 に答える
1

このスレッドを見てください。で解決できると思いますVirtualAlloc

C# 内から x86 アセンブリ シーケンスを実行することは可能ですか?

バイト配列に .Net アセンブリが含まれている場合、これを実行できるはずです。

Assembly assembly = AppDomain.Load(byteArray)
Type typeToExecute = assembly.GetType("ClassName");
Object instance = Activator.CreateInstance(typeToExecute);
于 2013-01-07T19:07:34.060 に答える