有人知道如何将exe文件嵌入到dll中?
我有一个工具,它是我从c#代码调用的exe文件。
问题是我想要1个dll包含这个工具(exe文件)和dll包含我的c#代码。
是否可以在资源中嵌入此exe文件?
提前谢谢
答案 0 :(得分:9)
当然可以。您可以在应用程序中将任何文件添加为RC_DATA作为资源。但是我相信在调用它之前你需要先将它提取到磁盘上!
您使用的是哪种IDE /语言?
[编辑]
抱歉!你确实提到过你正在使用C#。
答案 1 :(得分:7)
值得注意的是,您的使用可能对您这样做不太满意。将他们无法控制的可执行文件嵌入到您将提取和运行的DLL中,可能会让人担心在他们的计算机上运行特洛伊木马。
最好将.EXE保留在文件系统中,并对应用程序正在执行的操作保持透明。
答案 2 :(得分:2)
您可以从byte []加载程序集。这可以通过嵌入式资源的ManifestResourceStream获得。
答案 3 :(得分:1)
替代方法可能是不嵌入.exe本身,而是在dll中包含其功能,并使用rundll32 [1]来执行它。
答案 4 :(得分:-1)
另一方面,请记住,当您将资源从资源中提取到磁盘然后在其上执行代码时,您可能会触发Windows Data Execution Prevention - 基本上,Windows会尝试自动检测某些内容是否应该是代码或数据,如果它看起来像数据(资源会),那么它将阻止该数据作为代码执行。
如果您的.NET程序集将通过网络而不是本地驱动器使用,这将成为一个特别棘手的问题 - 有各种各样的.NET安全配置可能会阻止它正常工作。
另一个选项,并且不知道项目的详细信息,需要考虑到这一点:在您的安装中添加一个.exe.readme文件,向任何好奇的用户或IT人员描述为什么有可执行文件他们不是'期待在安装目录中:)