如何知道我的处理器在C#中是32位还是64位?

Emb*_*rja 6 c#

如何知道我的处理器在C#中是32位还是64位?

Pet*_*hie 6

对于使用.NET 4.0或更高版本的任何人,都有一个内置属性System.Environment.Is64BitOperatingSystem来为您提供此信息.


and*_*eer 5

本地检查C#的最简单方法是:

var size = IntPtr.Size;
Run Code Online (Sandbox Code Playgroud)

大小将等于4或8,但更大的问题是为什么你需要知道?

  • 这并不能告诉你它是什么类型的处理器,只是当前应用程序的运行方式. (4认同)

tim*_*oo8 5

您可以使用以下命令查询WMI类:Win32_ProcessorSystem.Management.ManagementObject

ManagementObject mo;
mo = new ManagementObject("Win32_Processor.DeviceID='CPU0'");
ushort i = (ushort)mo["Architecture"];

switch (i)
{
case 0:
  return "32 Bit";
  break;
case 9:
  return "64 Bit";
  break;
}
Run Code Online (Sandbox Code Playgroud)

查看其他处理器代码的MSDN Library说明.

这样做的一个问题是运行程序的用户需要查看WMI的权限.

  • 我可以在没有管理权限的情况下查询Win32_Processor类(来自PowerShell).您也可以只查询AddressWidth/DataWidth而不是架构,因为架构6(Itanium)也是64位.不要以为那里只有x86和x86_64. (2认同)