学习笔记之Management命名空间

using System.Management;

ManagementClass(string WIM_NAME);

通过 ManagementClass类,访问某WMI;

ManagmentClass.GetInstances() 返回关于WMI的实例,返回类型:ManagementObjectCollection,。表示通过 WMI 检索到的管理对象的不同集合,此集合中的对象为从 ManagementBaseObject 派生的类型,包括 ManagementObject 和 ManagementClass。通过 ManagementObjectSearcher 对象执行 WMI 查询,或者通过表示指定类型的 ManagementClass 检索该类型管理对象的枚举,可得到此集合。此外,这也可能是以指定方式与特定管理对象相关的管理对象集合 — 在这种情况下,此集合可以通过诸如 GetRelated() 之类的方法检索到。此集合可以通过 ManagementObjectCollection.ManagementObjectEnumerator 遍历,并且能够针对各种管理任务对集合中的对象进行检查或操作。

ManagemenObjectCollection.Count 属性表示这个返回的WMI实例的集合中的条目,

比如Win32_IP4RouteTable 返回的实例的Count 属性就是当前电脑的路由表中路由条数,你也可以用CMD命令route print来进行显示路由条数进行对比确认

foreach(ManagementObject mo in ManagementObjectCollection )

通过循环取出集合 的单个路由可以进行操作。

mo.put();  这个函数官方解释是提交对ManagementObject 的修改操作,

但如果你修改mo 的某个属性,再执行put,其实是添加了新的一条路由,而不是在的来的基础上进行的修改,原来的路由还是会保留。

所以,如果你想要修改某条路由,可以先复制一份,再执行put,然后执行Delete(),把原来的那条进行删除操作。达到修改的效果。

以上两个操作在 win7中会抛出UnauthorizedAccessException异常,原因在于WIN7的UAC权限限制了。只有用管理员方式运行就不会出现异常,请注意处理异常,

Win32_IP4RouteTable 官方说明http://msdn.microsoft.com/en-us/library/aa394162(v=vs.85).aspx

其中我们常用的字段为:

Destination 目标IP

Mask          子网掩码

NextHop     网关,也就是俗称下一跳

Metric1       跳数,也就是到达目标要经过的路由器数量,值越小越优先,

InterfaceIndex 就称为网卡的ID吧,每张网卡在电脑里都会有个唯一对应ID,通过route print CMD命令可以查看到网卡对应ID。

接口列表
 13...bc ae c5 25 07 0f ......JMicron PCI Express Gigabit Ethernet Adapte
 11...48 5d 60 26 7c 3d ......Atheros AR5007EG Wireless Network Adapter
 14...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
 15...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8

这个接口列表就是我电脑上的接口列表 11 就是我笔记本无线网卡的接口,13是有线网卡的接口,14,15 是虚拟机的网卡,

更多字段详见官方说明了。

说差不多了,上个源码,更明白

 ManagementClass routeClass = new ManagementClass("Win32_IP4routeTable");ManagementObjectCollection routeColl = routeClass.GetInstances();if (routeColl.Count > 0){foreach (ManagementObject mo in routeColl){Console.WriteLine("目标IP: {0}\t掩码: {1}\t网关: {2}\t跳数: {3}",mo["Destination"], mo["Mask"], mo["NextHop"], mo["Metric1"]);if (mo["Destination"].ToString() == "0.0.0.0") //不用直接用mo["Destination"]进行比对,会提示需要
//警告 1 可能非有意的引用比较;若要获取值比较,请将左边转换为类型“string” 并且结果是 false{//mo["Nexthop"] = "192.168.1.6";//mo["Type"] = 2;  //不管用,Type = 2 表示无效,用put提交后没效果,try{mo.Delete();  //删除这条路由。
                        }catch (UnauthorizedAccessException){MessageBox.Show("添加修改路由表无权限,请以管理员权限执行程序");}Console.WriteLine("目标IP: {0}\t掩码: {1}\t网关: {2}\t跳数: {3} 修改版", mo["Destination"], mo["Mask"], mo["NextHop"], mo["Metric1"]);}}}

好了,暂时只了解到这么多,有问题再回来修改,网上都找不到用WMI 修改东西的路由表的资料,用的好多是一个DLL API函数

C# WMI之Win32_IP4RouteTable相关推荐

  1. delphi中WMI的使用(一)

    WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术:用户可以使用 WMI 管理本地和远程计算机. 通过使用W ...

  2. .NET 框架中的 WMI 命名空间

    .NET 框架中的 WMI 命名空间   .NET框架中与WMI规范有关的命名空间有两个,分别是System.Management和System.Management.Instrumentation两 ...

  3. WMI Series :管理对象的信息查询和方法访问

    管理对象的信息查询和方法访问   在这一节内容,我们将通过几个实例来学习如何查询管理对象信息和访问管理对象提供的方法,这一部分内容将使用到我们在前面讲述到的System.Management命名空间中 ...

  4. WMI Series :事件预订和处理

    WMI事件概述 对于从事Winows编程的开发人员来说,事件驱动的应用程序设计是再熟悉不过了,但是WMI中的事件又是一个什么样的概念呢?对于宝贵的内存和CPU资源,管理员需要不断的监视其性能:对于磁盘 ...

  5. C#精髓【月儿原创】第二讲 WMI完美秀出CPU编号厂商主频百分比等全部信息

    说明:准备出一个系列,所谓精髓讲C#语言要点.这个系列没有先后顺序,不过尽量做到精.可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注. C#精髓 第二讲 WMI完美秀出CPU编号厂商主频电 ...

  6. 通过WMI获得硬盘和CPU的物理序列号(VB.net)

    作者:iwebsms   '获得硬盘序列号 Dim cmicWmi As New System.Management.ManagementObjectSearcher("SELECT * F ...

  7. WMI技术介绍和应用——总结(完)

    断断续续的,历经三年将WMI这个主题给写完了.记得最开始时接触该技术,是因为传统获取CPU序列号的方法总是出错.于是接触了这种已经很老的技术.本着打破砂锅问到底的想法,我决定稍微研究一下,结果越来越深 ...

  8. WMI技术介绍和应用——Event Consumer Provider

    在<WMI技术介绍和应用--Event Provider>和<WMI技术介绍和应用--接收事件>中,我们展现了如何处理和事件相关的WMI知识.而<WMI技术介绍和应用-- ...

  9. WMI技术介绍和应用——Event Provider

    在<WMI技术介绍和应用--Instance/Method Provider>一文中,我们介绍了Instance和Method Provider的编写方法.本文我们将介绍更有意思的&quo ...

最新文章

  1. L1-027 出租 (C++暴力解法)
  2. JavaScript sync and async(同步和异步)
  3. 深入微服务 API 网关之架构实践篇
  4. 偷看日历?9款 APP 涉嫌过度获取权限 1
  5. SpringBoot加itext实现PDF导出
  6. 将ListT集合用DataGridView展示
  7. CUDA编程指南阅读笔记
  8. 后台服务器控件点击跳转另一页面显示本页面
  9. 10_InfluxDB常用函数(三)变换类函数(DERIVATIVE, DIFFERENCE,ELAPSED,MOVING_AVERAGE,NON_NEGATIVE_DERIVATIVE)等
  10. QGraphicsView加入到布局,所在的窗口变大,视图和场景都变大,使场景中的矩形也变大
  11. docker 分布式管理群集_Coolpy7分布式物联网MQTT集群搭建
  12. 加快网站速度的最佳做法_(3)script脚本放在底部
  13. sublime php code sniffer,mac下sublime text3的php错误提示插件php code sniffer安装后,无法显示php错误...
  14. 第九期 HG255d硬件分析 《路由器就是开发板》
  15. ANDROID框架揭秘pdf
  16. 天勤数据结构代码——递归
  17. 对Win10和Linux双系统进行备份
  18. SMBJ6.5A瞬变抑制二极管
  19. eclipse中如何把中文变成英文?
  20. 工作5年,从年薪10W到年薪100W:会赚钱的人,都懂规划

热门文章

  1. Android:隐藏虚拟键盘
  2. [转帖]RC、CTP、RTM、OEM、RTL、VOL版本的区别
  3. 电脑录音软件哪个好用?如何录制声音?
  4. 使用CAD旋转复制命令绘制图形
  5. pascal和python那个好学_从Pascal到Python
  6. ANN神经网络入门——分类问题(MATLAB)
  7. tp5 接收图片_TP5框架实现上传多张图片的方法分析
  8. 常用的各种消息下wParam及lParam值的含义
  9. LeNet,AlexNet,VGG,NiN,GoogLeNet,ResNet
  10. js——替换字符串中的空格