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         }

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

  • 相关阅读:
    hdu 1017 A Mathematical Curiosity 解题报告
    hdu 2069 Coin Change 解题报告
    hut 1574 组合问题 解题报告
    hdu 2111 Saving HDU 解题报
    hut 1054 Jesse's Code 解题报告
    hdu1131 Count the Trees解题报告
    hdu 2159 FATE 解题报告
    hdu 1879 继续畅通工程 解题报告
    oracle的系统和对象权限
    oracle 自定义函数 返回一个表类型
  • 原文地址:https://www.cnblogs.com/lyhabc/p/2458675.html
Copyright © 2011-2022 走看看