visual-c++ - 确定处理器是 AMD64 还是 Intel64?

标签 visual-c++ wix inno-setup

Visual Studio C++ 编译器 provides命令行编译器选项 /favor:AMD64/favor:INTEL64 分别针对 AMD64 或 Intel64 处理器进行优化。现在,术语 AMD64 和 Intel64 are essentially interchangeable大多数用途,但有are some differences编译器可以优化。

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

我正在使用 InnoSetup 和 WiX 进行安装程序,我正在猜测要选择基于 AMD64 或 INTEL64 CPU 安装的版本。


编辑:回顾的一些笔记

最后,来自 RRUZ 的答案和 Andrew Cooper两者都为解决这个问题提供了很好的可靠策略,但由于它们都不是真正可靠的 future 证明,我个人将坚持为我的项目使用默认的 /favor:blend

最佳答案

您可以使用 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).

您可以在此处使用架构、系列、制造商和其他属性来确定处理器类型。

关于visual-c++ - 确定处理器是 AMD64 还是 Intel64?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10492484/

相关文章:

c++ - AdjustTokenPrivileges 错误 ERROR_NOT_ALL_ASSIGNED

xml - 如何使用 XMLFile 设置值?

wix - 如何获取 WIX 3.6 中编辑框的上下文菜单?

powershell - 如何在 Inno Setup Run 部分中运行 Set-ProcessMitigation PowerShell cmdlet

c++ - 在 Visual Studio 中为多个体系结构构建 Bullet Physics

c++ - 如何使用 GetCORSystemDirectory()?

c# - 从 C# 调用可视化 C++ 代码

wix - MSI 安装程序使用 WiX 在静默模式下调用另一个 MSI 安装程序

ado - 如何记录 ADO 连接的执行语句

compression - 如何将 RAR 文件添加到使用 Inno Setup 创建的安装可执行文件中而不进行压缩?