gpt4 book ai didi

c - 如何创建/编译包含另外两个文件的exe?

转载 作者:行者123 更新时间:2023-11-30 15:30:33 25 4
gpt4 key购买 nike

我有两个文件,都是exe。一种适用于 32 位,一种适用于 64 位。我想用 C 创建一个小程序(第三个 exe),其中包含这两个文件。当我启动第三个 exe 时,它​​应该做一些工作,并执行其中之一。这有可能吗?

提前致谢!

最佳答案

用 C 自己做

有一些方法可以在 C/C++ 中实现这种事情,描述 herehere 。基本上,您执行以下操作:

  1. 将 32 位和 64 位可执行文件作为二进制 PE 资源添加到 32 位 Bootstrap 可执行文件中。您可以使用任何 PE 资源编辑器(包括 Visual Studio)来执行此操作(如果您正在使用 Visual Studio)。
  2. Bootstrap 使用 IsWow64Process API来决定是否在64位系统上运行。
  3. Bootstrap 使用resource APIs从其资源中提取正确的可执行文件。
  4. Bootstrap 将可执行文件写入临时文件并执行它。

这几乎是我必须为一个旧项目所做的事情,并为您提供最大的控制力和灵 active 。但如果你只是想要快速而肮脏......

让 AutoIT 为您做这件事!

我还发现了this guide编译AutoIT脚本基本上可以为您完成上述所有操作!整洁,嗯?

我将在此处重现 AutoIT 脚本,以防链接消失:

; Check if we’re on 64-bit OS…
If EnvGet(“PROCESSOR_ARCHITEW6432″)=”” Then
; No we’re not – run x86 version…
FileInstall(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x86.exe”)
RunWait(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x86.exe”)
FileDelete(@TempDir & “\ETrustCheck_x86.exe”)
Else
; Yes we are – run x64 version..
FileInstall(“D:\Support\ETrustCheck_x64.exe”,@TempDir & “\ETrustCheck_x64.exe”)
RunWait(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x64.exe”)
FileDelete(@TempDir & “\ETrustCheck_x64.exe”)
EndIf

; The END

AutoIT 脚本编辑器可以将该脚本包装到 32 位启动器中,并将两个可执行文件打包到其中。

关于c - 如何创建/编译包含另外两个文件的exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25556851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com