8

好吧,所以我的想法是通过某种方式将 64 位和 32 位 Windows 可执行文件绑定到一个应用程序中,这样如果它不运行 64 位版本,它就会尝试 32 位版本。

我正在阅读有关 PE 的内容并了解了一些有关 MS-DOS 实模式存根的知识,它说明了它如何调用应用程序(通常是错误消息)。但是每次我尝试对 MS-DOS 实模式存根进行研究时,它似乎只显示错误消息。所以我的想法是用我的 32 位应用程序覆盖存根。

我天真地认为,当 32 位操作系统运行 64 位可执行文件时,它会失败,然后运行存根文件。

有什么方法可以让我的可执行文件 32 位/64 位独立?

4

2 回答 2

9

您无法创建包含x86x64代码的单个可执行文件。但是,您可以创建单独的 32 位和 64 位应用程序,将应用程序打包x64x86应用程序资源中。在程序启动时,您可以检查您是否正在x64使用运行环境,IsWow64Process然后如果需要,解压缩您的x64版本并运行它

于 2016-08-04T06:55:12.630 回答
3

MacOS、Linux 和 DOS(或混合 DOS-Windows)中有胖二进制文件,但 32 位和 64 位 Windows 没有

您可以编译程序的单独版本,然后通过另一个可执行文件的脚本进行选择

另一种方法是在安装时仅安装所需的版本。这被许多程序(如 CCleaner)使用。安装程序是 32 位应用程序或 .NET 等通用应用程序,因此它可以在任何地方运行。如果它检测到 64 位 Windows,则它只安装 64 位版本,与 32 位版本相同。

阅读更多:

于 2016-08-04T06:53:30.117 回答