リソース「WindowsFormsApplication1.exe」に2つのWinForms NETアプリケーション「Test.exe」があります。リソースは「埋め込み」としてマークされています。プログラム リソース - 空白のプロジェクト Winforms (ハンドラーのないフォームとボタンのみ)。「Test.exe」で共通コードを使用します。
private void button1_Click(object sender, EventArgs e)
{
this.Hide();
RunInternalExe("WindowsFormsApplication1.exe");
}
private static void RunInternalExe(string exeName)
{
//Get the current assembly
Assembly assembly = Assembly.GetExecutingAssembly();
//Get the assembly's root name
string rootName = assembly.GetName().Name;
//Get the resource stream
Stream resourceStream = assembly.GetManifestResourceStream(rootName + "." + exeName);
//Verify the internal exe exists
if (resourceStream == null)
return;
//Read the raw bytes of the resource
byte[] resourcesBuffer = new byte[resourceStream.Length];
resourceStream.Read(resourcesBuffer, 0, resourcesBuffer.Length);
resourceStream.Close();
//Load the bytes as an assembly
Assembly exeAssembly = Assembly.Load(resourcesBuffer);
//Execute the assembly
exeAssembly.EntryPoint.Invoke(null, null); //no parameters
}
リソースから EXE を実行しようとすると、次の行に "TargetInvocationException" というエラーが表示されます。
exeAssembly.EntryPoint.Invoke(null, null);