如何以编程方式确定我的处理器类型?

时间:2022-10-06 04:15:41

How can I determine programmatically whether my machine is an x86, x64 or an IA64?

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

7 个解决方案

#1


On Windows Systems you can get the environment variable PROCESSOR_ARCHITECTURE. Here is an MSDN article explaining the values that can be returned.

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

PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_ARCHITECTURE=IA64
PROCESSOR_ARCHITECTURE=x86

#2


VBScript, checking the PROCESSOR_ARCHITECTURE environment variable:

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, using WMI:

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


In 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);
    }
  }

#4


cat /proc/cpuinfo

#5


What's usually more important than the underlying processor is what mode the OS is running in, in ADDITION to the processor that's installed on the host.

通常比底层处理器更重要的是操作系统运行的模式,添加到主机上安装的处理器。

Examine the output of "uname -p" (or uname(2))

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

Intel adopted AMD's extensions for 64-bit instructions so a value of "x86_64" means you're running either an Intel or AMD 64-bit processor, otherwise you're running the regular x86 ISA.

英特尔采用了AMD的64位指令扩展,因此值“x86_64”意味着您运行的是Intel或AMD 64位处理器,否则您将运行常规x86 ISA。

#6


cpu-z is the program you want, it will tell you which processor you have and what extensions it supports

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

#7


In Java you shouldn't need to know. ;)

在Java中,您不需要知道。 ;)

#1


On Windows Systems you can get the environment variable PROCESSOR_ARCHITECTURE. Here is an MSDN article explaining the values that can be returned.

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

PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_ARCHITECTURE=IA64
PROCESSOR_ARCHITECTURE=x86

#2


VBScript, checking the PROCESSOR_ARCHITECTURE environment variable:

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, using WMI:

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


In 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);
    }
  }

#4


cat /proc/cpuinfo

#5


What's usually more important than the underlying processor is what mode the OS is running in, in ADDITION to the processor that's installed on the host.

通常比底层处理器更重要的是操作系统运行的模式,添加到主机上安装的处理器。

Examine the output of "uname -p" (or uname(2))

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

Intel adopted AMD's extensions for 64-bit instructions so a value of "x86_64" means you're running either an Intel or AMD 64-bit processor, otherwise you're running the regular x86 ISA.

英特尔采用了AMD的64位指令扩展,因此值“x86_64”意味着您运行的是Intel或AMD 64位处理器,否则您将运行常规x86 ISA。

#6


cpu-z is the program you want, it will tell you which processor you have and what extensions it supports

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

#7


In Java you shouldn't need to know. ;)

在Java中,您不需要知道。 ;)