资源文件(.RES)可以接受任何类型的二进制文件,但如果它是一个exe文件,我该如何运行它?
资源文件(.RES)可以接受任何类型的二进制文件,但如果它是一个exe文件,我该如何运行它?
您需要将其作为文件提取到磁盘并执行。
虽然您不必将其提取到磁盘,正如Cosmin Prund在评论中所说,但如果不这样做,需要很多努力。
点击此处查看内存执行单元。它可以让你在不将exe文件写入磁盘的情况下从内存中执行该文件。
TResourceStream
(http://www.delphidabbler.com/articles?article=3),你只需要更改 FileToBytes
函数(可能还要重命名它,以便名称表明其目的,比如 ResourceToBytes
?)。 - Pateman是的,这是可能的。在网上有一个Delphi库可以做到这一点,但我无论如何都想不起它叫什么了。它允许您执行一个普通的exe文件,无论它在内存中的位置在哪里。因此,您可以将其加载到流中,或者只是将其嵌入资源中。
我意识到我的回复有点令人沮丧,因为我不记得库的名称,但至少现在您知道它是可以实现的。如果您在谷歌上搜索“从内存执行PE exe”和“Delphi”,那么我相信您会找到它。
你可能想要看一下Orean的XBundler:http://www.oreans.com/xbundler.php
我使用过他们的许可产品(WinLicense),并且对产品、支持、响应和更新非常满意。
事实上,我即将购买XBundler,以便可以安全地将一个dll嵌入到我的exe中。
Tom