C# 是否可以执行嵌入式资源?

C# 是否可以执行嵌入式资源?,c#,executable,embedded-resource,C#,Executable,Embedded Resource,我将一个可执行文件放入我的项目资源中,并将其构建操作设置为“嵌入式资源”。当我请求这个资源时,我得到一个字节数组。如何将此资源当作可执行文件来执行?如果这是可能的,我更喜欢不必将字节数组写入可执行文件并执行此文件的解决方案。对于托管程序集,这很容易做到。所以我假设您指的是非托管可执行文件。没有官方支持的从内存中保存的文件创建非托管进程的方法。唯一受支持的方法是将其写入文件并使用、CreateProcess或类似方法 话虽如此,如果您准备打破规则,那么有大量的库和代码示例将诱使Windows从内存

我将一个可执行文件放入我的项目资源中,并将其构建操作设置为“嵌入式资源”。当我请求这个资源时,我得到一个字节数组。如何将此资源当作可执行文件来执行?如果这是可能的,我更喜欢不必将字节数组写入可执行文件并执行此文件的解决方案。

对于托管程序集,这很容易做到。所以我假设您指的是非托管可执行文件。没有官方支持的从内存中保存的文件创建非托管进程的方法。唯一受支持的方法是将其写入文件并使用、
CreateProcess
或类似方法

话虽如此,如果您准备打破规则,那么有大量的库和代码示例将诱使Windows从内存中保存的可执行映像创建进程。一旦反恶意软件程序开始对您的程序感兴趣,一定要做好准备。

原则上看是可能的(至少对于通常包含重新定位信息的DLL),但实际上很烦人。最大的困难之一是,如果不在可执行文件的基址处加载可执行文件,并且该可执行文件不包含与位置无关的代码,则需要重新定位它。有一些代码示例可供您自己重新定位,但这并不是一件小事。