我希望能够预测应用程序的默认安装位置。在64位计算机上,如果它是32位应用程序,它将安装在“Program Files(x86)”中,如果它是64位应用程序,它将安装在“Program Files”中。
我的目标是使用默认位置安装应用程序并验证安装是否正常。但为此,我需要知道它的安装位置。如果我知道构建应用程序的架构,我认为这符合我的目的。
答案 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
您可以在以下链接中找到更多方法。还有其他可用于此目的的PowerShell和VBS脚本