辨识作业系统是否为64位元的方法--使用C#

前一阵子,L帮公司写了一个自动化安装系统的程式,
有一堆必要Component,x86、x64的安装档案不同,例如:Windows Installer 4.5。
于是,为了让所有系统都可以达到自动辨识、安装的目的,写了以下一段程式,用来辨识OS是否为64位元。
前一阵子,L帮公司写了一个自动化安装系统的程式,
有一堆必要Component,x86、x64的安装档案不同,例如:Windows Installer 4.5。
于是,为了让所有系统都可以达到自动辨识、安装的目的,写了以下一段程式,用来辨识OS是否为64位元。

先解说一下基本的原理:
辨识的原理,其实很简单,基本的原理是透过检查作业系统的『CPU定址长度』来判定。
32位元的作业系统,CPU定址长度会是32bit,即使使用的实体CPU是64位元的,OS仍会判定是32bit。
64位元,就没有这种问题啦,不是64位元的CPU,应该也装不了64位元的OS。

以下是判断的程式码:

private bool DetectIf64bit(){  bool Is64Bit;  ObjectQuery objQry;  System.Management.ManagementScope mngScope;  System.Management.ConnectionOptions connOpt = new ConnectionOptions();  System.Management.ManagementObjectSearcher searcher;  //-----设定 WMI 连接资讯-----  connOpt.Username = "";   // 登入系统的帐号  connOpt.Password = "";   // 密码  connOpt.Authentication = AuthenticationLevel.Default;   // 连线验证方式  mngScope = new ManagementScope();  mngScope.Path = new ManagementPath(@"\\.\root\cimv2");  mngScope.Connect();  //----- 透过WMI撷取CPU定址长度资讯  objQry = new ObjectQuery("SELECT * FROM Win32_Processor");  searcher = new ManagementObjectSearcher(mngScope, objQry);  Is64Bit = false;  foreach (ManagementObject QryObj in searcher.Get())  {    if (QryObj.GetPropertyValue("AddressWidth").ToString().Trim() == "64")    {      Is64Bit = true;      break;    }  }  return (Is64Bit);}

这个辨识方法,已于Windows XP/Vista/2003/2008/7 实际测试,请安心服用...XDD


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章