加载EXE文件并从内存中运行

我想在概述运行从内存这样的可执行此文章。我可以很容易地运行任何.net /托管exe。但是我无法运行诸如notepad.exe或的可执行文件calc.exe。如何获取它,以便我也可以运行非托管exe?


明月笑刀无情
浏览 1227回答 3
3回答

喵喔喔

如果从内存中运行.NET可执行文件,则库和CLR本身会为您带来很多负担。对于诸如notepad.exe和calc.exe之类的本机可执行文件,您必须进行大量手动工作才能使其实现。基本上,您必须像Windows加载程序一样工作。这里可能有一些警告说明,但是这篇深入的文章提供了将PE Wiki,msdn加载到内存中并执行正确的变基和修复所需的步骤。然后,您应该能够找到入口点(如本文中所述)并运行它。如果您真的只想运行notepad.exe和calc.exe,那么最简单的方法当然就是在Process.Start磁盘上使用和运行它们。否则,如果您将可执行文件作为资源嵌入到您的进程中,那么下一个最简单的方法就是将内容写到临时位置的磁盘(请参阅参考资料Path.GetTempFileName),然后从那里执行。

慕仙森

如果您正在寻找使用C#运行Exe文件的方法,则此链接提供了一个很好的解释,并提供了一个简单但易于遵循的示例,说明如何使用Process和Process.Start应如何使用。简而言之,您可以Process.Start("notepad.exe")运行非托管的exe /应用程序。如果这样不起作用,请提供应用程序的完整路径,例如Process.Start(@"c:\windows\system32\notepad.exe")(我只是假设notepad.exe该文件夹中存在该文件夹,但您知道了。
打开App,查看更多内容
随时随地看视频慕课网APP