Visual C#中用WMI编写网络程序

2016-02-19 15:23 4 1 收藏

下面图老师小编跟大家分享Visual C#中用WMI编写网络程序,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

【 tulaoshi.com - 编程语言 】

  WMI是Windows Management Instrumentation的简称,即:视窗管理规范。在Windows 2000或以后的版本中均安装得有,NT4.0则需要安装WMI的核心组件。通过WMI可以获取远程计算机的各种数据信息,控制远程计算机的各种行为,而这就像操作本地机一样方便、简单。

  一.WMI简介

  WMI从根本上说应该为一种服务,并且对于本地不同的用户,WMI所有的权限也不一样。计算机超级用户可以为计算机中的每一个用户,设定不同的WMI权限。在默认状态下,超级用户拥有WMI的一切权限。提供WMI服务是通过程序"WinMgmt.exe"来实现的。可以从"System32Wbem"目录中找到这个文件。

  既然是服务,计算机使用者就可以享受这种服务,同样也可以关闭这种服务。具体的操作是:按顺序打开||。WMI服务在组件服务中的显示名称为"Windows Management Instrumentation"。具体如下图01所示:

  图01:组件服务窗口

  选中栏中"Windows Management Instrumentation",点击鼠标右键,在弹出的菜单中,选择,在选择框中选择"已禁用",然后在单击按钮,这样本地的WMI服务也就被关闭了。此时所有本地和远程的WMI调用均为非法。下图为关闭WMI服务后的界面:

  关闭WMI服务

  计算机的超级用户在默认状态下拥有WMI的一切权限,并且可以为本地其他用户设置WMI权限。具体操作是,按顺序打开:||。选中右边的中的。具体如图02所示:

  图02:对话框

  点击鼠标右键,在弹出的菜单中,选择。弹出对话框中,选择页面。具体如图03所示:

  图03: 打开WMI安全设置界面

  单击图9-4中按钮,弹出对话框,通过其中的和按钮,可以设定本地有哪些用户拥有WMI权限,并通过选择栏为每一个用户设置不同的权限,具体如图04所示:

  图04:设定本地用户的WMI权限

  通过上图,也可以发现计算机超级用户在默认状态的WMI权限都是允许的,并且这些权限都是无法删除的。

  二.Visual C#中操作WMI的类库简介

  .Net FrameWork SDK对WMI提供了全面的支持,.Net FrameWork SDK为Visual C#能够操作WMI提供了一个专门的命名空间"System.Management"。在命名空间"System.Management"中提供了大量用以处理和WMI相关的类、接口和枚举。

  命名空间"System.Management"中的成员是非常复杂的,由于篇幅所限完全介绍这些成员是不可能的,也是没有要的。根据我的经验,认为要了解、掌握在Visual C#中使用WMI,下面六个类应该是学习的重点,分别是ConnectionOptions、ManagementScope、ObjectQuery、ManagementObjectSearcher、ManagementObjectCollection和ManagementObject。下面就简单介绍一下六个类:

  ConnectionOptions类

  ConnectionOptions类主要的功能是为建立的WMI连接提供所需的所有设置。在利用WMI对远程计算机进行操作的时候,首先要进行WMI连接,WMI连接主要是使用的是ManagementScope 类,成功完成WMI连接就要提供远程计算机WMI用户名和口令。ConnectionOptions类可以通过其属性来提供这些信息。表01是ConnectionOptions类的一些主要属性及其简单的说明。

  属性 说明Authority 获取或设置将用于验证指定用户的权利。Locale 获取或设置将用于连接操作的区域设置。Password 提供用于WMI连接操作的口令。Username提供用于WMI连接操作的用户名。

  表01:ConnectionOptions类常用属性及其说明

  其中最常用的属性是Password和Username。

  ManagementScope 类

  通过ManagementScope类能够建立和远程计算机(或者本地计算机)的WMI连接,表示管理可操作范围。创建WMI连接可以通过二种方法:

  ( 1 ) . 利用构造函数,当使用下面构造函数初始化ManagementScope 类实例,同时也就建立了WMI连接,具体如下:

  

public ManagementScope (string path ,ConnectionOptions options) ;

  参数:

  path ManagementScope的服务器和命名空间。

  options 包含有关连接的选项的 ConnectionOptions。

  使用构造函数是有风险的,因为如果不能根据提供的选项建立WMI连接,程序会程序异常,出现错误。

  下列代码是利用此构造函数构建建立ManagementScope实例,并建立于远程计算机majinhu的WMI连接:

  

System.Management.ConnectionOptions Conn = new ConnectionOptions ( ) ;//设定用于WMI连接操作的用户名Conn.Username = "WMI用户名";//设定用户的口令Conn.Password = "此用户名对应口令";System.Management.ManagementScope Ms = new ManagementScope("\majinhurootcimv2", Conn ) ;

  ( 2 ) . 利用ManagementScope中提供的Connect方法:

  ManagementScope中的成员是非常少的,最常用的方法和属性各一个:常用属性是Options,主要为WMI建立提供参数;常用方法是Connect,通过它可以建立于远程计算机的WMI连接。下列是利用Connect方法建立WMI连接的具体代码:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  

System.Management.ConnectionOptions Conn = new ConnectionOptions ( ) ;//设定用于WMI连接操作的用户名Conn.Username = "WMI用户名";//设定用户的口令Conn.Password = "此用户名对应口令";System.Management.ManagementScope Ms = new ManagementScope("\majinhurootcimv2" ) ;Ms.Options = Conn ;Ms.Connect ( ) ;//建立WMI连接

  ObjectQuery类

  ObjectQuery类或其派生类用于在ManagementObjectSearcher中指定查询。程序中一般采用查询字符串来构造ObjectQuery实例。其中的查询字符串是一种类似SQL语言的WQL语言。下面的ObjectQuery类构造函数中最常见的一种,具体语法如下:

  

public ObjectQuery (string query) ;

  参数:

  query 查询的字符串

  ManagementObjectSearcher类

  ManagementObjectSearcher主要是根据指定的查询检索WMI对象的集合。ManagementObjectSearcher组成成员也非常简单,其方法Get方法是非常重要的,ManagementObjectSearcher通过Get方法进行WMI查询,并把得到的结果集合。Get方法的返回值是一个ManagementObjectCollection实例,它包含匹配指定查询的对象。

  表02是其ManagementObjectSearcher类的常用属性及其说明。

  属性 说明Options 有关如何搜索对象的选项Query 在搜索器中调用的查询Scope 在其中查找对象的范围      表02:ManagementObjectSearcher类常用属性及其说明

  ManagementObjectCollection类

  ManagementObjectCollection类非常简单,它主要表示 WMI 实例的不同集合其中包括命名空间、范围和查询观察程序等。创建ManagementObjectCollection类没有构造函数。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  ManagementObject类

  ManagementObject类为单个管理对象或类。通过ManagementObject中的方法可以调用ManagementObject对应的对象,从而执行相应的操作。ManagementObject类是一个内容丰富的类,表03和表04分别是其常用的属性和方法。

  属性 说明ClassPath 对象的类的路径。Options 检索对象时要使用的其他信息。Path 对象的 WMI 路径。Scope 此对象在其中驻留的范围。       表03:ManagementObject类常用属性及其说明

  方法说明Clone创建对象的一个副本。CopyTo将对象复制到另一个位置。Delete 删除对象。Get 绑定到管理对象。GetRelated 获取与该对象(联系对象)相关的对象的集合。GetRelationships获取该对象的关联的集合。InvokeMethod 调用对应的对象方法。Put 提交对对象所做的更改。      表04:ManagementObject类常用方法及其说明

  下面就结合二个具体的示例来介绍Visual C#中利用上述类,提供WMI掌握如何利用WMI编写网络应用程序,所使用的类库主要是使用了上面接收的这六个类。

来源:https://www.tulaoshi.com/n/20160219/1609529.html

延伸阅读
如果要你在程序中显示数据库中的数据记录,你首先想用的显示工具肯定是DataGrid。当然用DataGrid显示数据记录是一种既常用又简单的方法。但是在程序控制方面,它却无法那么随心所欲。本文就是介绍另外一种显示数据记录的方法--用ListView来显示数据记录,由于他是手动加入记录,虽然在程序设计中稍微烦琐了些,但对于那些在特殊的显示要求...
C#中程序结构的关键概念为程序、命名空间、类型、成员和程序集。C#程序包括一个或多个源文件。程序中声明类型,类型包含成员并能够被组织到命名空间中。类和接口是类型的例子。字段、方法、属性和事件则是成员的例子。当C#程序被编译时,它们被物理地打包到程序集中。程序集的文件扩展名一般为.exe或者.dll,这取决于它们是实现为应用程序...
本文向大家介绍Windows Sockets的一些关于用C#实现的原始套接字(Raw Socket)的编程,以及在此基础上实现的网络封包监视技术。同Winsock1相比,Winsock2最明显的就是支持了Raw Socket套接字类型,使用Raw Socket,可把网卡设置成混杂模式,在这种模式下,我们可以收到网络上的IP包,当然包括目的不是本机的IP包,通过原始套接字,我们也可以...
在下面的练习中,将创建一个应用程序,它包含的一个方法能够计算一名顾问的收费金额假定该顾问每天收取固定的费用,将根据工作了多少天来收费。首先要开发应用程序的逻辑,然后利用生成方法存根向导来写出这个逻辑使用的方法。接着,我们将在一个控制台应用程序中运行方法,以获得对该程序的最终印象。最后,我们将使用Visual Studio 2005...
ICMP就是所谓的Internet控制报文协议(Internet Control Message Protocol),在网络中,一般用它来传递差错报文以及其他应注意的信息。ICMP一般被认为是和IP协议同一层的协议,IMCP报文通常被IP层或者更高层的协议(如:TCP或者UDP)使用,ICMP对于互联网以及其他基于IP协议的网络的正常运行起着非常重要的作用。有许多重要的网络程序都是...

经验教程

747

收藏

12
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部