1

我希望能够预测应用程序的默认安装位置。在 64 位机器上,如果是 32 位应用程序,它将安装在“Program Files (x86)”中,如果是 64 位应用程序,它将安装在“Program Files”中。

我的目标是使用默认位置安装应用程序并验证安装是否正常。但为此,我需要知道它将安装在哪里。如果我知道应用程序是为什么架构构建的,我认为它会达到我的目的。

4

2 回答 2

2

如果您可以使用外部工具,那么GNUfile是最通用的解决方案。但为此目的可能有点矫枉过正。其他替代方案是Dependency Walker、Sysinternals 的Sigcheck、MSVC 的垃圾箱或 corflags ......但可能会让很多人感到惊讶的是7zip。它file内部有一个类似的小实用程序,可以与l选项一起使用

C:\>7z l "C:\Program Files (x86)\Windows Photo Viewer\ImagingDevices.exe" | findstr CPU
CPU = x86

C:\>7z l "C:\Program Files\Windows Photo Viewer\ImagingDevices.exe" | findstr CPU
CPU = x64

如果您必须自己检查,请在文件中的偏移量 0x3C 处读取 2 个字节。然后将此值加 4 并在该偏移处读取 2 个字节,这将指示架构。例如,在下面的示例中,文件在偏移量 0x3C 处包含 0x00E0。在偏移量 0x00E0 + 4 = 0x00E4 包含0x8664,这意味着 64 位二进制。如果它是 32 位 x86 二进制文件,那么它将包含0x014C

PE文件以文本形式打开

您可以在以下链接中找到更多方法。还有其他可用于此目的的 PowerShell 和 VBS 脚本

于 2014-02-14T07:21:58.070 回答
1

下载fileWindows 以检查 Windows 上任何文件的详细信息:

http://gnuwin32.sourceforge.net/packages/file.htm

然后,通过 Windows 命令行:

C:\> "C:\Program Files\GnuWin32\bin\file" name-of-file.exe
name-of-file.exe executable for MS Windows (GUI) Intel 80386 32-bit

您应该能够从您使用的任何开发平台获取此命令的返回值。

于 2009-12-07T07:36:56.420 回答