zoukankan      html  css  js  c++  java
  • WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法

    今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都是可以提取出来的,就自己把那些公共部分提出出来,以后如果要获取

    某部分的硬件信息就不用写一个一个的函数,比如获取MAC地址就写一个获取MAC地址的函数,获取CPU 信息就写一个获取CPU信息的

    函数,太麻烦了

    如下是函数代码:

     1         private static string identifier(string wmiClass, string wmiProperty, string wmiMustBeTrue)
     2         {
     3             string result = "";
     4             System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass);
     5             System.Management.ManagementObjectCollection moc = mc.GetInstances();
     6             foreach (System.Management.ManagementObject mo in moc)
     7             {
     8                 if (mo[wmiMustBeTrue].ToString() == "True")
     9                 {
    10                     if (result == "")
    11                     {
    12                         try
    13                         {
    14                             result = mo[wmiProperty].ToString();
    15                             break;
    16                         }
    17                         catch
    18                         {
    19                         }
    20                     }
    21 
    22                 }
    23             }
    24             return result;
    25         }
    26 
    27 
    28         private static string identifier(string wmiClass, string wmiProperty)
    29         {
    30             string result = "";
    31             System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass);
    32             System.Management.ManagementObjectCollection moc = mc.GetInstances();
    33             foreach (System.Management.ManagementObject mo in moc)
    34             {
    35                 if (result == "")
    36                 {
    37                     try
    38                     {
    39                         result = mo[wmiProperty].ToString();
    40                         break;
    41                     }
    42                     catch
    43                     {
    44                     }
    45                 }
    46 
    47             }
    48             return result;
    49         }

    获取CPUID

    1         private static string cpuId()
    2         {     
    3             string retVal = identifier("Win32_Processor", "UniqueId");  //CPUID   
    4             retVal += identifier("Win32_Processor", "ProcessorId");
    5             retVal += identifier("Win32_Processor", "Name");  //处理器名称
    6             retVal += identifier("Win32_Processor", "Manufacturer");  //处理器制造商
    7             retVal +=identifier("Win32_Processor", "MaxClockSpeed");  //最大时钟频率
    8             return retVal;
    9         }

    获取BIOS信息,其中BIOS序列号就是联想台式机的出厂编号,我看联想的保修页面里的自动获取主机编号应该也是调用

    这个"Win32_BIOS"的 "SerialNumber

    报修页面网址:http://support1.lenovo.com.cn/lenovo/wsi/wsbx/lenovo/#minarepairInfo

     1         //BIOS信息
     2         private static string biosId()
     3         {
     4             return identifier("Win32_BIOS", "Manufacturer")          //BIOS制造商名称
     5                     + identifier("Win32_BIOS", "SMBIOSBIOSVersion")  //
     6                     + identifier("Win32_BIOS", "IdentificationCode") //
     7                     + identifier("Win32_BIOS", "SerialNumber")       //BIOS序列号
     8                     + identifier("Win32_BIOS", "ReleaseDate")        //出厂日期
     9                     + identifier("Win32_BIOS", "Version");           //版本号
    10         }

    获取硬盘信息:

    1         private static string diskId()
    2         {
    3             return identifier("Win32_DiskDrive", "Model")           //模式
    4                     + identifier("Win32_DiskDrive", "Manufacturer") //制造商
    5                     + identifier("Win32_DiskDrive", "Signature")    //签名
    6                     + identifier("Win32_DiskDrive", "TotalHeads");  //扇区头
    7         }

    获取主板信息:

    1         private static string baseId()
    2         {
    3             return identifier("Win32_BaseBoard", "Model")              
    4                     + identifier("Win32_BaseBoard", "Manufacturer")    
    5                     + identifier("Win32_BaseBoard", "Name")
    6                     + identifier("Win32_BaseBoard", "SerialNumber");
    7         }

    获取显卡信息:

    1         private static string videoId()
    2         {
    3             return identifier("Win32_VideoController", "DriverVersion")
    4                     + identifier("Win32_VideoController", "Name");
    5         }

    获取网卡MAC地址信息:

    1         private static string macId()
    2         {
    3             return identifier("Win32_NetworkAdapterConfiguration", "MACAddress", "IPEnabled"); 
    4         }

    如有什么不对的地方,欢迎大家拍砖!!

  • 相关阅读:
    Win8系统 Python安装
    一些安卓开源框架整理
    Android 媒体键监听以及模拟媒体键盘的实现 demo
    android View 自动 GONE 问题
    Android 定时器TimerTask 简单使用
    关于Android studio 相对 eclipse 优点
    Java序列化与反序列化
    android shape的使用 边框
    Android Studio 修改 包名 package name
    Android WebView Long Press长按保存图片到手机
  • 原文地址:https://www.cnblogs.com/lyhabc/p/2458675.html
Copyright © 2011-2022 走看看