【问题标题】:How can I programmatically determine my processor type?如何以编程方式确定我的处理器类型?
【发布时间】:2010-11-04 11:16:11
【问题描述】:

如何以编程方式确定我的机器是 x86、x64 还是 IA64?

【问题讨论】:

  • 你可以打开电脑看看CPU。您在寻找代码答案吗?
  • 也许你的意思是问“我怎么知道我的机器类型是什么?”
  • 如果你在 Linux 上试试 'uname -m'
  • 奇怪。 OP 没有提到 C#、VBScript 或 Java。
  • 检查这个 SO 问题 -> stackoverflow.com/questions/824877/…

标签: c# java vbscript processor


【解决方案1】:

在 Windows 系统上,您可以获得环境变量 PROCESSOR_ARCHITECTURE。这是一篇 MSDN 文章,解释了可以返回的值。

PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_ARCHITECTURE=IA64
PROCESSOR_ARCHITECTURE=x86

【讨论】:

  • 不确定为什么会被标记下来,在命令行中输入 echo % PROCESSOR_ARCHITECTURE%
  • 正是我想要的!
  • MSDN 文章建议这告诉您操作系统架构,而不是处理器类型(您可以在 x86_64 处理器上安装 x86 操作系统)。
【解决方案2】:

VBScript,检查 PROCESSOR_ARCHITECTURE 环境变量:

Set oShell = CreateObject("WScript.Shell")
Set oEnv = oShell.Environment("System")
Select Case LCase(oEnv("PROCESSOR_ARCHITECTURE"))
  Case "x86"
    ' x86
  Case "amd64"
    ' amd64
  Case "ia64"
    ' ia64
  Case Else
    ' other
End Select

VBScript,使用 WMI:

Const PROCESSOR_ARCHITECTURE_X86  = 0
Const PROCESSOR_ARCHITECTURE_IA64 = 6
Const PROCESSOR_ARCHITECTURE_X64  = 9

strComputer = "."

Set oWMIService = GetObject("winmgmts:" & _
    "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colProcessors = oWMIService.ExecQuery("SELECT * FROM Win32_Processor")

For Each oProcessor In colProcessors
  Select Case oProcessor.Architecture
    Case PROCESSOR_ARCHITECTURE_X86
      ' x86
    Case PROCESSOR_ARCHITECTURE_X64
      ' x64
    Case PROCESSOR_ARCHITECTURE_IA64
      ' ia64
    Case Else
      ' other
  End Select
Next

【讨论】:

    【解决方案3】:

    在 C# 中:

    using System;
    using Microsoft.Win32;
    
      class Class1
      {
        static void Main(string[] args)
        {
          RegistryKey RegKey = Registry.LocalMachine;
          RegKey = RegKey.OpenSubKey("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0");
          Object cpuSpeed = RegKey.GetValue("~MHz");
          Object cpuType  = RegKey.GetValue("VendorIdentifier");
          Console.WriteLine("You have a {0} running at {1} MHz.",cpuType,cpuSpeed);
        }
      }
    

    【讨论】:

    • 您可能希望获得包含供应商通用型号名称的“ProcessorNameString”,而不是“VendorIdentifier”。
    【解决方案4】:

    cat /proc/cpuinfo

    【讨论】:

      【解决方案5】:

      除了安装在主机上的处理器之外,通常比底层处理器更重要的是操作系统运行的模式。

      检查“uname -p”(或uname(2))的输出

      英特尔采用了 AMD 对 64 位指令的扩展,因此“x86_64”值表示您正在运行英特尔或 AMD 64 位处理器,否则您正在运行常规 x86 ISA。

      【讨论】:

        【解决方案6】:

        cpu-z 是你想要的程序,它会告诉你你有哪个处理器以及它支持哪些扩展

        【讨论】:

        • cpuid-pro.com/index.php 是开发者页面。如果需要,这将提供有关 CPU、架构等的大量详细信息
        【解决方案7】:

        在 Java 中你不需要知道。 ;)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-20
          • 2012-01-26
          • 2020-01-23
          • 1970-01-01
          • 1970-01-01
          • 2021-06-09
          • 2023-03-10
          • 2010-12-21
          相关资源
          最近更新 更多