• 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         }

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

  • 相关阅读:
    IOC Unity的配置问题
    编译时常量与运行时常量
    Revit二次开发,将插件按钮(Ribbon)变灰或者隐藏
    C#类库读取App.config配置文件
    winform固定窗体大小
    Revit二次开发,获取模型版本信息
    JavaScript:文件保存自動下載函數:Save和SaveAs
    JavaScript:年月日時分秒設置
    JavaScript:字符串の空格刪減和字符刪減功能
    JavaScript:獲取數據の類型
  • 原文地址:https://www.cnblogs.com/lyhabc/p/2458675.html
Copyright © 2020-2023  润新知