如何确定我安装的应用程序是32位还是64位?

时间:2009-12-07 07:16:58

标签: x86 x86-64 executable 32bit-64bit

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

我的目标是使用默认位置安装应用程序并验证安装是否正常。但为此,我需要知道它的安装位置。如果我知道构建应用程序的架构,我认为这符合我的目的。

2 个答案:

答案 0 :(得分:1)

下载file for Windows以检查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

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

答案 1 :(得分:1)

如果您可以使用外部工具,那么GNU file是最通用的解决方案。但为此目的可能有点矫枉过正。其他选择是Dependency Walker,Sysinternals'Sigcheck,MSVC的dumpbin或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 file opened as text

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