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