有人知道如何将exe文件嵌入到dll中吗?将a * .exe嵌入到dll中
我有一个工具,它是从c#代码调用的exe文件。
事情是,我想有一个DLL包含这个工具(EXE文件)和包含我的C#代码的DLL。
是否有可能将此exe文件嵌入到资源中?
Thx预先
有人知道如何将exe文件嵌入到dll中吗?将a * .exe嵌入到dll中
我有一个工具,它是从c#代码调用的exe文件。
事情是,我想有一个DLL包含这个工具(EXE文件)和包含我的C#代码的DLL。
是否有可能将此exe文件嵌入到资源中?
Thx预先
当然可以。您可以将任何文件作为RC_DATA添加到应用程序中作为资源。但我相信在调用它之前,您需要首先将其解压到磁盘上!
您正在使用哪种IDE /语言?
[编辑]
对不起!你确实提到你在使用C#。
值得霸菱记住,你的应用可能不会太很高兴你这样做。将他们无法控制的可执行文件嵌入到要提取并运行的DLL中可能会让人担心在他们的机器上运行木马。
将.EXE保留在文件系统中并对您的应用程序正在做什么保持透明会更好。
您可以从byte []加载程序集。这可以通过嵌入资源的ManifestResourceStream获得。
另一种可能是不嵌入.exe本身,而是在dll中包含它的功能,并使用rundll32 [1]来执行它。
请注意,当您从资源中将文件拖到磁盘上,然后在其上执行代码时,您可能会触发Windows Data Execution Prevention - 基本上,Windows会尝试自动检测是否应该是代码或数据,如果它看起来像数据(资源会),那么它将阻止数据作为代码执行。
如果您的.NET程序集要通过网络而不是本地驱动器使用,那么这成为一个特别棘手的问题 - 有各种各样的.NET安全配置可能会阻止它正常工作。
另一个选择,不知道你的项目的细节,采取这一点盐:添加一个.exe.readme文件到您的安装,描述任何好奇的用户或IT人员为什么有一个可执行文件,他们没有期待在安装目录:)
我删除了“嵌入”标签,因为这个问题并没有真正涉及到嵌入式系统。 – 2009-02-23 16:13:32