将* .exe嵌入到dll中

有人知道如何将exe文件嵌入到dll中?

我有一个工具,它是一个exe文件,我从c#代码调用。

问题是我想要1个dll包含这个工具(exe文件)和dll包含我的c#代码。

是否可以在资源中嵌入此exe文件?

Thx提前

当然是啦。 您可以在应用程序中将任何文件添加为RC_DATA作为资源。 但我相信你需要先将它提取到磁盘才能调用它!

您使用的是哪种IDE /语言?

[编辑]

抱歉! 你确实提到过你正在使用C#。

  1. 向您的应用程序添加资源文件(右键单击IDE中的应用程序,然后选择“添加新项”。
  2. 使用资源编辑器中的工具栏添加现有文件。
  3. 然后在需要时通过调用代码来提取exe,例如:System.IO.File.WriteAllBytes(@“C:\ MyEXE \”,Resource1.MyEXE);

值得注意的是,您的使用可能对您这样做不太满意。 将他们无法控制的可执行文件嵌入到您将提取和运行的DLL中可能会让人担心在他们的计算机上运行特洛伊木马程序。

最好将.EXE保留在文件系统中,并对应用程序正在执行的操作保持透明。

您可以从byte []加载程序集。 这可以通过嵌入资源的ManifestResourceStream获得。

另一种方法可能是不嵌入.exe本身,而是在dll中包含它的function,并使用rundll32 [ 1 ]来执行它。

另外,请记住,当您将资源从资源提取到磁盘然后在其上执行代码时,您可能会触发Windows 数据执行保护 – 基本上,Windows会尝试自动检测某些内容是应该是代码还是数据,以及如果它看起来像数据(资源会),那么它将阻止该数据作为代码执行。

如果您的.NET程序集将通过网络而不是本地驱动器使用,这将成为一个特别棘手的问题 – 有各种各样的.NET安全配置可能会阻止它正常工作。

另一个选项,并不知道您的项目的细节,采取一些盐:在您的安装中添加.exe.readme文件,向任何好奇的用户或IT人员描述为什么有一个他们不期望的可执行文件安装目录:)