-1

如果我将一个可执行文件作为资源嵌入到进程中,并且希望直接从内存中运行该进程而不将其放在磁盘上。

static void Main()
{
const string pathOfExecutable = @"C:\WINDOWS\system32\notepad.exe"; //size = 67KB 
// read the bytes from the application EXE file
FileStream fs = new FileStream(pathOfExecutable, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
byte[] byteArray = br.ReadBytes(Convert.ToInt32(fs.Length));
fs.Close();
br.Close();


//Process.Start(byteArray) //Cannot use this, any other alternative?

}
4

3 回答 3

2

Assembly.Load将加载 .net 程序集。记事本不是这样的东西。这是一个普通的旧本机 Win32 应用程序。你试图做的事情不能用Assembly.Load.

于 2013-09-17T11:17:22.517 回答
2

您的方法仅适用于托管可执行文件。notepad.exe 是本机可执行文件。要运行它,请使用Process类。

于 2013-09-17T11:17:23.837 回答
1

一种解决方案是将内存内容写入临时文件 ( Path.GetTempFileName),然后使用Process.Start()

于 2013-09-17T11:32:10.470 回答