`
ihuashao
  • 浏览: 4748883 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

阅读更多

作者:阿虎

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

  一.WMI简介

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

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

VisualC#中用WMI编写网络应用程序

图01:组件服务窗口

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

VisualC#中用WMI编写网络应用程序

关闭WMI服务

  计算机的超级用户在默认状态下拥有WMI的一切权限,并且可以为本地其他用户设置WMI权限。具体操作是,按顺序打开:【控制面板】|【管理工具】|【计算机管理】。选中【计算机管理】右边的【服务和应用程序】中的【WMI控件】。具体如图02所示:

VisualC#中用WMI编写网络应用程序

图02:【计算机管理】对话框

  点击鼠标右键,在弹出的菜单中,选择【属性】。弹出【WMI控件属性】对话框中,选择【安全】页面。具体如图03所示:

VisualC#中用WMI编写网络应用程序

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

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

VisualC#中用WMI编写网络应用程序

图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("\\majinhu\root\cimv2", Conn ) ;

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

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

System.Management.ConnectionOptions Conn = new ConnectionOptions ( ) ;
//设定用于WMI连接操作的用户名
Conn.Username = "WMI用户名";
//设定用户的口令
Conn.Password = "此用户名对应口令";
System.Management.ManagementScope Ms = new ManagementScope("\\majinhu\root\cimv2" ) ;
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类没有构造函数。

  ·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编写网络应用程序,所使用的类库主要是使用了上面接收的这六个类。
分享到:
评论

相关推荐

    vb.net/C#双码 获取CPU温度/主板温度/显卡温度 硬盘温度 驱动获取非wmi

    本项目提供了VB.NET和C#两种编程语言的代码实现,用于非WMI方式获取CPU、主板、显卡以及硬盘的温度。WMI(Windows Management Instrumentation)虽然是一种常见的系统信息获取方法,但有时可能会因为权限问题或性能...

    C#中用WMI控制远程计算机.txt

    在C#中,可以利用.NET Framework中的`System.Management`命名空间来访问和控制WMI服务。以下是对给定代码段中涉及的关键概念和步骤的详细解释: #### 1. 创建连接选项 ```csharp ConnectionOptions options = new ...

    C# 调用WMI 获取系统信息

    C#是一种广泛使用的编程语言,能够方便地与Windows Management Instrumentation(WMI)进行交互,从而获取计算机的各种信息。WMI是Windows操作系统的一个核心组件,它提供了一个统一的接口来管理系统资源和监控系统...

    C#中用WMI获取服务器信息-A.doc

    在C#编程中,Windows Management Instrumentation(WMI)是一个强大的工具,用于管理和监控Windows操作系统以及安装在其上的应用程序和服务。WMI是Microsoft的管理规范(WBEM)的实现,允许开发者通过标准的接口来...

    Wmi与Vb.Net结合

    本项目就是将这两者结合起来,通过Vb.Net编写程序来利用WMI的功能。 【描述】:“此程序是利用系统WMI管理脚本托管写成,内容包含不安全代码,程序代码都已经用中文注释,别说看不懂” 描述中提到,该程序使用了WMI...

    .net,C#编写的小程序,可以方便操作:控制面板、注册表、打印机、CMD、资源管理器、设备管理器、任务管理器、计算机管理器、垃圾、磁碎整理、组策略和远程连接等。

    标题中的".net,C#编写的小程序"涉及到的是微软的.NET框架和C#编程语言,这是一种常用的开发工具组合,用于创建跨平台的应用程序。C#是一种面向对象的编程语言,具有现代编程语言的特点,如类型安全性和垃圾回收机制...

    C#、wmi 远程监控进程内存

    开发者可以利用WMI API编写应用程序,实现对远程计算机的监控和管理。 在C#中,我们通常会使用System.Management命名空间来访问WMI接口。以下是一个简单的示例,展示如何查询远程计算机上的进程信息: ```csharp ...

    在.NET,C#中得到计算机硬件信息的一些功能

    在.NET框架和C#编程语言中,获取计算机硬件信息是一项常用的任务,这有助于开发者创建能够适应不同硬件环境的应用程序。本文将深入探讨如何利用.NET和C#获取CPU、内存、硬盘、显卡等硬件信息。 首先,让我们关注CPU...

    c#使用wmi查询usb设备信息示例

    开发环境:Visual Studio V2010 .NET Framework 4 Client Profile 代码如下:using System;using System.Management;using System.Text.RegularExpressions;using System.Collections.Generic; namespace Splash.IO....

    .net C#调用VBS脚本

    在C#中调用VBScript,主要是通过COM(Component Object Model)互操作性实现的,这允许.NET应用程序使用非托管代码,如VBScript。 首先,我们需要引用`Interop.MSScriptControl.dll`,这是Microsoft提供的一个COM...

    C#实现获取打印机状态

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用和服务器应用程序时。在C#中,可以通过调用操作系统提供的API(应用程序接口)来实现与硬件设备的交互,比如打印机。本文将深入探讨如何使用C#来...

    C# 基于WMI的系统监控源码

    WMI是微软提供的一种管理系统和应用程序的接口,通过COM技术实现了对Windows系统下各类硬件和软件资源的管理。它提供了一种标准的查询语言——WQL(WMI Query Language),用于检索和管理系统信息。开发者可以使用...

    c#使用WMI更改IP地址

    在IT行业中,Windows Management Instrumentation(WMI)是一种强大的系统管理工具,允许程序员通过脚本或应用程序接口(API)来获取和控制操作系统级别的信息。在C#编程中,利用WMI可以实现各种系统操作,例如更改...

    WMI设置网卡及获取网卡信息

    在描述中提到的MFC测试项目,它是基于Microsoft Foundation Classes (MFC) 的一个应用程序框架,常用于开发Windows桌面应用程序。VS2010中包含了对MFC的支持,使得开发者可以方便地使用C++来调用WMI服务,实现对网卡...

    深入.NET平台和C#编程 指导学习3标准参考

    首先,.NET平台是微软推出的一个用于构建跨平台应用程序的框架,它包含了编译器、运行时环境(CLR,Common Language Runtime)、类库和开发工具等组件。深入学习.NET平台意味着要理解其核心组成部分的工作原理,如...

    C#操作WMI完美demo

    Windows Management Instrumentation(WMI)是Microsoft提供的一种管理系统资源和应用程序的接口,它允许开发者通过标准的脚本语言或编程语言来访问和操作Windows操作系统中的各种组件信息。在C#中,我们可以使用...

    ASP.NET C#获取硬盘序列号

    在ASP.NET中,C#是一种常用的编程语言,用于构建动态Web应用程序。当涉及到软件版权保护时,获取硬盘序列号可以作为一个验证用户是否拥有合法副本的手段。硬盘序列号是硬盘制造商为每个硬盘分配的唯一标识符,类似于...

    系统管理编程实例,共27个小例子程序,C#.net源代码编写

    2. **.NET Framework**:这是微软开发的一个软件框架,它包含了运行C#应用程序所需的所有库和服务。学习如何利用.NET Framework中的类库进行系统管理任务,如文件操作、网络通信、数据库访问等,是这些实例的核心...

    wmi.rar_C# WMI_windows wmi_wmi_wmi proerties

    它允许应用程序通过标准接口访问系统信息,如硬件状态、软件设置、网络配置等。C#作为.NET框架的一部分,提供了强大的支持来与WMI进行交互。下面将详细探讨C#中使用WMI的相关知识点。 首先,要使用C#进行WMI查询,...

    WMI.rar_C# WMI_WMI WIN32_process.z_windows wmi_wmi

    Windows Management Instrumentation(WMI)是微软提供的一种基于标准的管理设施,它使得应用程序能够访问和控制Windows系统的信息,包括硬件、软件、网络等资源。WMI使用Common Information Model (CIM) 标准,允许...

Global site tag (gtag.js) - Google Analytics