1. 添加

System.Management 的引用

2. 在cs代码中初始化引用

ManagementClass mc = new ManagementClass("引用的WMI库名称");

可供引用的WMI类库在MSDN中可查到:

http://msdn.microsoft.com/en-us/library/aa394084(v=VS.85).aspx

3. 获取WMI实例

ManagementObjectCollection moc= vNetworkAdapter.GetInstances();

这里获取到的是WMI实例集合,例如,获取网络适配器信息,这里会获取到无线连接、有线连接、1394连接等与网络连接有关的实例集合。

4. 循环个实例获取其属性

foreach (ManagementObject mo in moc)
{

  //TODO: 获取各实例属性

  //实例各属性、方法、解释也可在http://msdn.microsoft.com/en-us/library/aa394084(v=VS.85).aspx里查到

}

5. 修改

修改需要用到 ManagementObject.InvokeMethod(MethodName, ManagementBaseObject, InvokeMethodOptions ); 方法

MethodName 为要执行的方法名称的,也可在上面MSDN的链接中查到;

ManagementBaseObject 不好解释,官方解释为“包含管理对象的基本元素。用作管理更具体的管理对象类的基类。”

InvokeMethodOptions 执行附加选项,可以为NULL。

完整实例:

ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject  mo in moc)
{
    //如果没有启用IP设置的网络设备则跳过   
    if (!(bool)mo["IPEnabled"])
        continue;

// 获取属性
    string caption = mo["Caption"].ToString();              //名称
    string[] addresses = (string[])mo["IPAddress"];         //IP地址
    string[] subnets = (string[])mo["IPSubnet"];            //子网掩码
    string[] gateways = (string[])mo["DefaultIPGateway"];   //网关
    string[] dnses = (string[])mo["DNSServerSearchOrder"];  //DNS

ManagementBaseObject newIP;

// 修改IP及子网掩码
    newIP = mo.GetMethodParameters("EnableStatic");    
    newIP["IPAddress"] = new string[] { "192.168.2.51" };
    newIP["SubnetMask"] = new string[] { "255.255.255.0" }; //修改IP同时,需要填写子网掩码
    mo.InvokeMethod("EnableStatic", newIP, null);

// 设置网关地址 
    newIP = mo.GetMethodParameters("SetGateways");
    newIP["DefaultIPGateway"] = new string[] { "192.168.2.1" };
    mo.InvokeMethod("SetGateways", newIP, null);

// 设置DNS 
    newIP = mo.GetMethodParameters("SetDNSServerSearchOrder");
    newIP["DNSServerSearchOrder"] = new string[] { "192.168.1.10" };
    mo.InvokeMethod("SetDNSServerSearchOrder", newIP, null);
   }

 ///获取cpu序列号///</summary>///<returns> string </returns>public string GetCpuInfo(){string strID = "";try{ManagementClass mc = new ManagementClass("Win32_Processor");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){strID = mo.Properties["ProcessorId"].Value.ToString();break;}}catch (Exception ex){throw new Exception("WMI:GetCpuInfo" + ex.ToString() + ex.Data.ToString()+ ex.HelpLink.ToString());}return strID;}/// <summary>/// 获取主板的编号/// </summary>/// <returns></returns>public string GetMainBoardID(){ManagementClass mc = new ManagementClass("Win32_BaseBoard");ManagementObjectCollection moc = mc.GetInstances();string strID = null;foreach (ManagementObject mo in moc){strID = mo.Properties["SerialNumber"].Value.ToString();break;}return strID;}/// <summary>/// 获取BIOS编号/// </summary>/// <returns></returns>public string GetBiosID(){ManagementClass mc = new ManagementClass("Win32_BIOS");ManagementObjectCollection moc = mc.GetInstances();string strID = null;foreach (ManagementObject mo in moc){strID = mo.Properties["SerialNumber"].Value.ToString();break;}return strID;}///<summary>///   获取硬盘ID///</summary>///<returns> string </returns>public string GetHDid(){//ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");网上有提到,用Win32_DiskDrive,但是用Win32_DiskDrive获得的硬盘信息中并不包含SerialNumber属性。  //ManagementObjectCollection moc = mc.GetInstances();//string strID = null;//foreach (ManagementObject mo in moc)//{//    strID = mo.Properties["SerialNumber"].Value.ToString();//    break;//} //return strID;const int MAX_FILENAME_LEN = 256;int retVal = 0;GetVolumeInformation("c:\\",null,MAX_FILENAME_LEN,ref retVal,0,0,null,MAX_FILENAME_LEN);return retVal.ToString("X"); }///<summary>///   获取网卡硬件地址///</summary>///<returns> string </returns>public string GetMacAddress(){string MoAddress = "0000000000";using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration")){ManagementObjectCollection moc2 = mc.GetInstances();foreach (ManagementObject mo in moc2){if ((bool)mo["IPEnabled"] == true){MoAddress = mo["MacAddress"].ToString();MoAddress = MoAddress.Replace(":", "");}mo.Dispose();}}//NetworkInterface[] ntif = NetworkInterface.GetAllNetworkInterfaces();//if (ntif.Length > 0)//{//    string temp = ntif[0].GetPhysicalAddress().ToString();//}return MoAddress.ToString();}

C# Management 类获取本机各种信息相关推荐

  1. QT学习:获取本机网络信息

    获取本机网络信息,具体实现方法如下: (1)头文件"networkinformation.h"的具体代码如下: #include <QWidget> #include ...

  2. [Qt教程] 第35篇 网络(五)获取本机网络信息

    [Qt教程] 第35篇 网络(五)获取本机网络信息 楼主  发表于 2013-9-5 11:32:58 | 查看: 278| 回复: 2 获取本机网络信息 版权声明 该文章原创于作者yafeilinu ...

  3. Qt网络获取本机网络信息

    下面我们就讲解如何获取自己电脑的IP地址以及其他网络信息.这一节中,我们会涉及到网络模块(QtNetwork Module)中的QHostInfo ,QHostAddress ,QNetworkInt ...

  4. [转载]Qt之获取本机网络信息

    原文地址:Qt之获取本机网络信息作者:一去丶二三里 经常使用命令行来查看一些计算机的配置信息. 1.首先按住键盘上的"开始键+R键",然后在弹出的对话框中输入"CMD&q ...

  5. [转载]Qt之获取本机网络信息_vortex_新浪博客

    原文地址:Qt之获取本机网络信息作者:一去丶二三里 经常使用命令行来查看一些计算机的配置信息. 1.首先按住键盘上的"开始键+R键",然后在弹出的对话框中输入"CMD&q ...

  6. 第35篇 网络(五)获取本机网络信息

    导语 前面讲完了HTTP和FTP,下面本来该讲解UDP和TCP了.不过,在讲解它们之前,我们先在这一节里讲解一个以后要经常用到的名词,那就是IP地址. 对于IP地址,其实,会上网的人都应该听说过它.如 ...

  7. CPUID获取本机CPU信息

    CPUID获取本机CPU信息 目录 问题 分析 代码 运行结果 问题 请使用Visual Studio编写一个控制台程序,功能如下: 一.使用命令CPUInfo.exe -C读取本机CPU信息,并存储 ...

  8. qt获取本机全部ipv4_Qt之获取本机网络信息(MAC, IP等等,很全)

    经常使用命令行来查看一些计算机的配置信息. 1.首先按住键盘上的"开始键+R键",然后在弹出的对话框中输入"CMD",回车 另外,还可以依次点击 开始>所 ...

  9. java使用siger 轻松获取本机硬件信息(CPU 内存 网络 io等)

    1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到java路径.比如windows32位操作系统需要将lib中sigar ...

最新文章

  1. linux shell awk 中 printf 用法
  2. jvm二:类加载,连接,初始化
  3. 初探swift语言的学习笔记三(闭包-匿名函数)
  4. 关键字—final static const的区别
  5. 韦东山衔接班——4.4_构建根文件系统之构建根文件系统
  6. 前端每日实战:163# 视频演示如何用原生 JS 创作一个多选一场景的交互游戏(内含 3 个视频)...
  7. ConsumerNetworkClient 分析
  8. (python)数据结构------列表
  9. js alert 封装 layui
  10. Python程序发布(打包)及pyInstaller、cx_Freeze工具使用介绍
  11. 项目管理系统TOP10,好用的产品研发项目管理系统都在这里了
  12. 数据安全与分类分级、敏感信息定义与分级分类标准
  13. 1987:【20CSPS提高组】括号树P5658 [CSP-S2019] 括号树
  14. 【消费者心理与行为(第6版)】第7章 消费者的需要与购买动机
  15. 微信公众号如何嵌入照片征集视频征集小程序
  16. 颜色值透明度的百分数对应十六进制表
  17. Long类型转为String类型
  18. 有史以来最牛逼的一张程序员职业路线图,分享给你
  19. 浅入浅出代理模式与Spring事务管理
  20. 微信小程序发送服务通知

热门文章

  1. html5 星空,用canvas实现简单的星空效果
  2. 什么是私有地址?如何分类?
  3. 游戏建模‖那些你找工作时不明白的事
  4. python twisted安装_windows python twisted下载 安装 使用
  5. dijkstra 算法_数据结构与算法—单源最短路径dijkstra算法
  6. 宝塔服务器重启后redis启动报错pid file is exits
  7. 计算机无法启用媒体流,电脑流媒体打不开怎么回事?电脑打开媒体流的方法
  8. 程序人生 - 程序员高情商的聊天技巧
  9. 正则匹配:match()、test()函数区别
  10. [翻译] 在 Overleaf 上使用 xr 包来交叉引用