当我使用以下方法扫描 Windows 目录中的几个可执行文件时保护ID,我偶然扫描了 Windows 资源管理器。结果如下。
Scanning -> C:\Windows\explorer.exe
File Type : 64-Bit Exe (Subsystem : Win GUI / 2), Size : 2871808 (02BD200h) Byte(s)
[!] Warning : Cpu is AMD, this file is for IA64 (incompatible)
[x] Warning - FileAlignment seems wrong.. no solution calculated (using NULL)
[File Heuristics] -> Flag : 00000000000001001101000000000000 (0x0004D000)
[CompilerDetect] -> Visual C++ 9.0 (Visual Studio 2008)
[!] File appears to have no protection or is using an unknown protection
- Scan Took : 0.548 Second(s)
我知道我的处理器是 Core 2 Duo,并且是 x64 架构,因此出现了警告标志。但我安装的操作系统是 Windows 7 x64。上述结果让我产生一个疑问:我的操作系统是 x64 还是 IA64?我该如何找到它?
更新 在 ProtectionID 的最新版本中,这个错误警告似乎已经得到修复。
答案1
CPU 类型应该在环境变量中%PROCESSOR_ARCHITECTURE%
,echo %PROCESSOR_ARCHITECTURE%
命令提示符中应该会给出AMD64
x86-64 处理器。msinfo32.exe 还应该有一个“系统类型”字段,它显示 x64 型 PC 是基于 x86-64 处理器的。我不确定你为什么有 IA64 系统二进制文件...
这似乎是 ProtectionID 的问题:
Scanning -> C:\Windows\explorer.exe
File Type : 64-Bit Exe (Subsystem : Win GUI / 2), Size : 2871808 (02BD200h) Byte(s)
[!] Warning : Cpu is AMD, this file is for IA64 (incompatible)
[x] Warning - FileAlignment seems wrong.. no solution calculated (using NULL)
[File Heuristics] -> Flag : 00000000000001001101000000000000 (0x0004D000)
[CompilerDetect] -> Visual C++ 9.0 (Visual Studio 2008)
[!] File appears to have no protection or is using an unknown protection
- Scan Took : 0.828 Second(s)
但在 PE Stuff 选项卡中:
答案2
正如 Q 笔记中的第一条评论,Windows 7 没有 IA64 版本。对于 IA64 版本,您必须使用服务器。
也许确定此信息的最可靠方法是使用 WMI 和类Win32_操作系统和Win32_计算机系统。
使用 PowerShell 和gwmi
别名Get-WmiObject
:
PS> gwmi win32_computersystem -computer one,two,localhost | ft __SERVER,系统类型 __SERVER 系统类型 -------- ---------- 一台基于 X86 的 PC 两台基于 x64 的 PC 三台基于 x64 的 PC
因此,一个不是 64 位,另外两个都是 x64,都不是 IA64。1然后:
PS [64] E:\ #12> gwmi win32_operatingsystem -comp one,two,localhost| ft __SERVER,caption __SERVER 标题 -------- ------- 一个 Microsoft® Windows Server® 2008 标准版 两个 Microsoft Windows Server 2008 R2 标准版 微软 Windows 7 Ultimate
因此,One 是 Win2k8 32 位,Two 是 Win2k8R2 64 位,Three(localhost)是 Win7 64 位。
1我没有 IA64 系统来检查该SystemType
字段将具有什么值。
答案3
IA64 架构与 x86-64(又名 AMD64)架构完全不同,大多数人说 64 位时指的是 x86-64 架构。因此,即使有兼容 IA64 的 Windows 7 版本(其他人指出,没有 1 ),它也需要安腾处理器,您将无法将其安装在 Core 2 Duo 或任何其他 x86-64 系统上。
编辑:此外,还有一种使用 WMI 获取处理器架构的方法(从命令提示符或 PS):
wmic CPU get Architecture
CPU
是Win32_处理器class,可能的值2为(括号中含义):
0
(x86)9
(x86-64)6
(安腾)
1最后一个支持IA64的客户端版本是Windows XP;Windows Server 2008 R2 将是最后一个服务器版本.
2还有一些其他的,用于像 MIPS、Alpha 和 PowerPC 这样的架构,但是那些大多是出于遗留原因;请参阅上面的 MSDN 文章了解详细信息。
答案4
打开命令窗口并运行以下命令:
C:\>set | findstr ARCH
PROCESSOR_ARCHITECTURE=x86