确定处理器是AMD64还是Intel64?

Boi*_*nst 3 inno-setup wix visual-c++

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我的项目默认.

RRU*_*RUZ 5

你可以使用Win32_ProcessorWMi类,从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).
Run Code Online (Sandbox Code Playgroud)

在这里,您可以使用Architecture,Family,Manufacturer和tohers属性来确定处理器类型.


归档时间:

查看次数:

1110 次

最近记录:

13 年,4 月 前