我想在概述运行从内存这样的可执行此文章。我可以很容易地运行任何.net /托管exe。但是我无法运行诸如notepad.exe或的可执行文件calc.exe。如何获取它,以便我也可以运行非托管exe?
3 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
如果从内存中运行.NET可执行文件,则库和CLR本身会为您带来很多负担。对于诸如notepad.exe和calc.exe之类的本机可执行文件,您必须进行大量手动工作才能使其实现。基本上,您必须像Windows加载程序一样工作。
这里可能有一些警告说明,但是这篇深入的文章提供了将PE Wiki,msdn加载到内存中并执行正确的变基和修复所需的步骤。然后,您应该能够找到入口点(如本文中所述)并运行它。
如果您真的只想运行notepad.exe和calc.exe,那么最简单的方法当然就是在Process.Start磁盘上使用和运行它们。否则,如果您将可执行文件作为资源嵌入到您的进程中,那么下一个最简单的方法就是将内容写到临时位置的磁盘(请参阅参考资料Path.GetTempFileName),然后从那里执行。
慕仙森
TA贡献1827条经验 获得超7个赞
如果您正在寻找使用C#运行Exe文件的方法,则此链接提供了一个很好的解释,并提供了一个简单但易于遵循的示例,说明如何使用Process和Process.Start应如何使用。
简而言之,您可以
Process.Start("notepad.exe")
运行非托管的exe /应用程序。
如果这样不起作用,请提供应用程序的完整路径,例如
Process.Start(@"c:\windows\system32\notepad.exe")
(我只是假设notepad.exe该文件夹中存在该文件夹,但您知道了。
- 3 回答
- 0 关注
- 1348 浏览
添加回答
举报
0/150
提交
取消