C#判断操作系统是32位还是64位(转)

1 根据句柄长度判断操作系统是否为64位操作系统
public static bool IsRunningOn64Bit { get { return IntPtr.Size == 8; } }
2 根据句柄长度判断操作系统是否为64位操作系统(不安全代码)
public static unsafe bool IsRunningOn64Bit { get { return (sizeof(IntPtr) == sizeof(long)); } }

将项目做如下设置:项目属性对话框->配置属性->生成->允许不安全代码块 设为"true"

3 根据AddressWidth属性判断

AddressWidth的值受CPU和操作系统的双重影响。如下:

 32bit OS64bit OS
32bit CPUAddressWidth = 32N/A
64bit CPUAddressWidth = 32AddressWidth = 64

以下程序段读取AddressWidth的值

public static string GetAddressWidth() {     ConnectionOptions oConn = new ConnectionOptions();     System.Management.ManagementScope oMs = new System.Management.ManagementScope(" \\\\localhost", oConn);     System.Management.ObjectQuery oQuery = new System.Management.ObjectQuery("select AddressWidth from Win32_Processor");     ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery);     ManagementObjectCollection oReturnCollection = oSearcher.Get();     string addressWidth = null;
    foreach (ManagementObject oReturn in oReturnCollection)     {         addressWidth = oReturn["AddressWidth"].ToString();     }
    return addressWidth; }
4 判断操作系统是否为64位操作系统
bool IsRunningOn64Bit() { #if defined(_WIN64)  return true; // 64-bit programs run only on Win64 #elif defined(_WIN32)  // 32-bit programs run on both 32-bit and 64-bit Windows  // so must sniff  bool f64 = false;  return IsWow64Process(GetCurrentProcess(), &f64) && f64; #else  return false; // Win64 does not support Win16 #endif }

网友评论:不要用IsWow64Process(),Wow64特指Windows32 On Win64。

转载于:https://www.cnblogs.com/tabcdt/p/3871841.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值