今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都是可以提取出来的,就自己把那些公共部分提出出来,以后如果要获取某部分的硬件信息就不用写一个一个的函数,比如获取MAC地址就写一个获取MAC地址的函数,获取CPU 信息就写一个获取CPU信息的函数,太麻烦了

如下是函数代码:

private static string identifier(string wmiClass, string wmiProperty, string wmiMustBeTrue)

{

string result = "";

System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass);

System.Management.ManagementObjectCollection moc = mc.GetInstances();

foreach (System.Management.ManagementObject mo in moc)

{

if (mo[wmiMustBeTrue].ToString() == "True")

{

if (result == "")

{

try

{

result = mo[wmiProperty].ToString();

break;

}

catch

{

}

}

}

}

return result;

}

private static string identifier(string wmiClass, string wmiProperty)

{

string result = "";

System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass);

System.Management.ManagementObjectCollection moc = mc.GetInstances();

foreach (System.Management.ManagementObject mo in moc)

{

if (result == "")

{

try

{

result = mo[wmiProperty].ToString();

break;

}

catch

{

}

}

}

return result;

}

获取CPUID

private static string cpuId()

{

string retVal = identifier("Win32_Processor", "UniqueId");  //CPUID

retVal += identifier("Win32_Processor", "ProcessorId");

retVal += identifier("Win32_Processor", "Name");  //处理器名称

retVal += identifier("Win32_Processor", "Manufacturer");  //处理器制造商

retVal +=identifier("Win32_Processor", "MaxClockSpeed");  //最大时钟频率

return retVal;

}

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

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

//BIOS信息

private static string biosId()

{

return identifier("Win32_BIOS", "Manufacturer")          //BIOS制造商名称

+ identifier("Win32_BIOS", "SMBIOSBIOSVersion")  //

+ identifier("Win32_BIOS", "IdentificationCode") //

+ identifier("Win32_BIOS", "SerialNumber")       //BIOS序列号

+ identifier("Win32_BIOS", "ReleaseDate")        //出厂日期

+ identifier("Win32_BIOS", "Version");           //版本号

}

获取硬盘信息:

private static string diskId()

{

return identifier("Win32_DiskDrive", "Model")           //模式

+ identifier("Win32_DiskDrive", "Manufacturer") //制造商

+ identifier("Win32_DiskDrive", "Signature")    //签名

+ identifier("Win32_DiskDrive", "TotalHeads");  //扇区头

}

获取显卡信息:

private static string videoId()

{

return identifier("Win32_VideoController", "DriverVersion")

+ identifier("Win32_VideoController", "Name");

}

获取网卡MAC地址信息:

private static string macId()

{

return identifier("Win32_NetworkAdapterConfiguration", "MACAddress", "IPEnabled");

}

联想台式计算机的设备序列号,WMI获取硬件信息封装函数方法(联想台式机出厂编号 CPUID BIOS序列号 硬盘信息 显卡信息 MAC地址)...相关推荐

  1. C++通过WMI获取硬件配置信息

    C++通过WMI获取硬件配置信息 WMI即Windows管理规范.通过它可以访问.配置.管理和监视几乎所有的Windows资源. WMI提供程序在WMI和托管资源之间扮演着中间方的角色.提供程序代表使 ...

  2. wmi获取硬件信息c语言,通过 WMI来获取本地计算机软件硬件信息

    一网打尽 介绍及款工具  WMITools和WMICodeCreator 生成.net或vbs代码来操作WMI的. 您想需要怎么调用都可以了.具体怎么下,google或bing下吧. 相关脚本 'On ...

  3. 联想笔记本计算机里没有dvd,联想笔记本电脑启动设备引导列表没有DVD选项的解决方法...

    联想计算机可以在启动过程中通过启动快捷键F12选择要启动的设备.默认情况下,启动设备启动列表将具有硬盘,CD-ROM,网络和其他选项,但是某些用户遇到了不带DVD选项的Lenovo笔记本启动选项.问题 ...

  4. C#通过WMI的wind32 的API函数实现msinfo32的本地和远程计算机的系统摘要信息查看功能...

    最近做一个项目碰到要实现查看本地和远程计算机的摘要信息,采用命令行msinfo32可以很快查看到,如下图: 需要在用C#来实现类似信息查看.尤其远程计算机的..因此通过MSDN查询到.win32的AP ...

  5. C#通过WMI的wind32 的API函数实现msinfo32的本地和远程计算机的系统摘要信息查看功能

    最近做一个项目碰到要实现查看本地和远程计算机的摘要信息,采用命令行msinfo32可以很快查看到,如下图: 需要在用C#来实现类似信息查看.尤其远程计算机的..因此通过MSDN查询到.win32的AP ...

  6. oracle自定义函数获取省份,oracle 自定义函数 方法 基本例子

    核心提示:函数用于返回特定数据.执行时得找一个变量接收函数的返回值; 语法如下: create or replace function function_name ( argu1 [mode1] da ...

  7. 获取MAC地址的四种方法(转)

    https://www.cnblogs.com/zlshmily/p/10058560.html zlshmily 在实际的应用系统中,我们往往会需要在程序运行时获取当前机器的网卡的MAC地址,以便作 ...

  8. 联想小新pro无法人脸识别自动开机的解决方法

    联想小新pro无法人脸识别自动开机的解决方法 联想小新pro无法人脸识别自动开机,只能输入PIN解锁. 文章目录 联想小新pro无法人脸识别自动开机的解决方法 一.问题 二.解决方法 一.问题 打开电 ...

  9. linux c 获取mac地址吗,Linux系统下用C语言获取MAC地址

    最近在做一个小程序,需要用到在linux系统里编写C程序从而获取MAC地址,从网上搜了一遍,想总结一下.如果你就只需要单个功能的程序,可以采用方法一,见代码1,一般最好能够封装起来,写成获取MAC地址 ...

最新文章

  1. Android之在BaseAdapter源码中了解观察者模式
  2. oracle 日期加3个月,三个日期函数(十分有用)!!!!!!!!
  3. How does Spring @Transactional Really Work?--转
  4. Matplotlib Tutorial(译)
  5. 完整的开发一个ContentProvider步骤
  6. 加密Spring加载的Properties文件
  7. 求一个任意实数c的算术平方根g_中考总复习实数知识点
  8. DeepFaceLab报错,CUDA driver is insufficient 解决方法!
  9. MySQL版本升级5.6到5.7版本
  10. ERROR Request failed with status code 404 :at createError (node_modules\axios\lib\core\createError.
  11. 5g组网sa方式的演进_关于5G的SA(独立组网)和NSA(非独立组网),这篇通俗易懂!
  12. 网页监控之自己设计监控界面
  13. R 两组样本t检验 wilcoxon检验、卡方、fisher精确检验
  14. 平衡二叉树的调整(详解 LL、RR、LR、RL)
  15. vue项目微信公众号title设置和调用接口动态修改
  16. 9. 【gRPC系列学习】连接失败处理:backoff协议
  17. 每日一题#10-22 Ransomware
  18. JAVASE基础(十)
  19. java中奇数魔方,算法-奇数阶魔方
  20. PTA 练习实验6 十道练习题

热门文章

  1. Lintcode 2.尾部的零
  2. 计算机软件设计图ns图,PC梯形图的四种设计方法
  3. 各种音视频编解码学习详解之 编解码学习笔记(十三):容器
  4. 谷歌的ie9.js ie8.js ie7.js 解决IE5、IE6、IE7、IE8与W3C标准的冲突
  5. 用python求几个整数的和_python里面整数
  6. 刘鹏报告:人工智能引领未来
  7. 谷歌翻译接口识别语言php,利用谷歌翻译接口实现网站多语言切换
  8. 一台完整的微型计算机应由,计算机文化基础试题库
  9. 一文搞定vim,从安装到入门到精通,助你成功入门vim
  10. 《网络安全工程师笔记》 第十二章:域