确定一个处理器是AMD64还是Intel64?

问题描述 投票:3回答:3

Visual Studio C++编译器 提供 命令行编译器选项 /favor:AMD64/favor:INTEL64 分别针对AMD64或Intel64处理器进行优化。现在,AMD64和Intel64这两个术语 基本上可以互换 在大多数情况下,但有 有所不同 编译器可以优化的。

在Microsoft Windows 7上,有没有一种可靠的方法可以在应用程序安装时检查我们是安装在AMD64还是INTEL64系统上?

我是用InnoSetup和WiX来安装程序的,我猜测是根据AMD64或INTEL64 CPU来选择安装的版本。


编辑:回想起来的一些注意事项

最后,来自 RRUZAndrew Cooper 两者都给出了很好的处理这个问题的坚实策略,但由于它们都没有真正坚定地证明未来,我个人将坚持默认的策略。/favor:blend 的项目。

visual-c++ wix inno-setup
3个回答
5
投票

你可以使用 Win32_Processor WMi类,从Inno设置中可以顺利执行WMI查询。查看这个示例。

var
  FSWbemLocator : Variant;
  FWMIService   : Variant;
  FWbemObject   : Variant;
begin
FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator');
FWMIService   := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', '');
FWbemObject   := FWMIService.Get('Win32_Processor');
if FWbemObject.Architecture=9 then //is a 64 bits processor
  if  FWbemObject.Family=131 then  //all 64-bit AMD processors are identified by using a Family attribute value of 0x83 (131).

从这里你可以使用Architecture, Family, Manufacturer和其他属性来确定处理器的类型。


2
投票

你可以试试 %PROCESSOR_IDENTIFIER% 环境变量。

在AMD系统中,该值以 "AuthenticAMD "结尾。

在Intel系统中,该值以 "GenuineIntel "结尾。

(至少在我检查过的所有系统中是这样的)


1
投票

你能不能不使用组合,如果 Msix64Intel windows安装程序属性来确定?这显然是假设 Intel 属性对AMD64处理器的设置是正确的。有一个 Intel64 属性,但这只显示处理器是否是Itanium处理器,我想你不会介意。

© www.soinside.com 2019 - 2024. All rights reserved.