首页 > 代码库 > C#判断操作系统是32位还是64位(转)
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 OS | 64bit OS | |
32bit CPU | AddressWidth = 32 | N/A |
64bit CPU | AddressWidth = 32 | AddressWidth = 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。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。