How can I programmatically determine my processor type?

╄→尐↘猪︶ㄣ 提交于 2019-12-01 02:20:33

问题


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


回答1:


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

PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_ARCHITECTURE=IA64
PROCESSOR_ARCHITECTURE=x86



回答2:


VBScript, checking the PROCESSOR_ARCHITECTURE environment variable:

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:

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))

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.




回答6:


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




回答7:


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



来源:https://stackoverflow.com/questions/1020581/how-can-i-programmatically-determine-my-processor-type

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!