WMI 使用教程_.NET 入门教程

转载 2013年01月06日 11:23:55
 WMI 使用教程_.NET 入门教程 


先介绍一下WMI 相关知识: 
什么是WMI 呢? Windows 管理规范 (Windows Management Instrumentation ),它的主要功 
能包括:访问本地主机的一些信息和服务,可以远程管理计算机(当然你必须拥有足够的权限) 
也就是说可以象重起,关机,关闭进程,创建进程等等! 


有了初步了解下面我门开始一些初步的工作吧: 
在这个WMI 程序中,我将实现四个基本功能: 
1.Explorer 类似与windows 里的资源管理器 
2.SystemInfo 查看你的硬件信息和OS 信息 
3.Services 当前正在工作的信息 
4.Processes 当前执行的进程 
(这里是可以管理远程和本地OS 的) 


好了,我们要开始实现访问我们的OS 了,不过在这之前我们必须要引入System.Management 
这个命名空间 


下面让我们了解一下控件的状态事件 


我们必须保证是实时的所以必须在这里包涵UpdateStatus(string e)该事件(这是一个自定 
义的) 
这里主要是希望在点击每个控件时刷新状态栏,可以让用户知道程序在做什么! 


代码事例: 
//控件代码 
//状态事件的代理 
public delegate void Status(string e); 
public event Status UpdateStatus; 
//这里更新状态栏 
UpdateStatus("Hello world."); 


//这里是在主程序里的代码 
//写具体的事件代码 
private void refreshStatusBar(string stringStatus) 

//update status bar 
statusBarStatus.Text = stringStatus; 



下面是具体代码: 


Explorer Control 

这里首先介绍一下WMI的 Win32_LogicalDisk类(参考Platform SDK: Windows Management 
Instrumentation),通过它我们可以查看到本地驱动器 
的一些详细情况,我们还需要用到System.Management中的两个类
ManagementObjectSearcher 
和ManagementOjbectCollection它们的作用主要是ManagementObjectSearcher将查询到了 
ManagementOjbectCollection该对象的集合中去(这里可以获取的驱动器信息包括 驱动器
的名称 
,类型,描述信息等)当然你也可以只查看驱动器的部分信息可以在
ManagementObjectSearcher类 
的构造函数中这样写ManagementObjectSearcher query = new 
ManagementObjectSearcher("SELECT * From Win32_LogicalDisk "); (参考Platform SDK: 
Windows Management Instrumentation) 
代码如下: 
//get drive collection   
ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * From 
Win32_LogicalDisk ");   
ManagementObjectCollection queryCollection = query.Get(); 
//loop throught each object to get drive information 
foreach ( ManagementObject mo in queryCollection)   
{   
switch (int.Parse( mo["DriveType"].ToString()))   
{   
case Removable: //removable drives   
imageIndex = 5;   
selectIndex = 5;   
break;   
case LocalDisk: //Local drives   
imageIndex = 6;   
selectIndex = 6;   
break;   
case CD: //CD rom drives   
imageIndex = 7;   
selectIndex = 7;   
break;   
case Network: //Network drives   
imageIndex = 8;   
selectIndex = 8;   
break;   
default: //defalut to folder   
imageIndex = 2;   
selectIndex = 3;   
break;   
}

//get drive name 
Console.WriteLine("Drive: " + mo["Name"].ToString());   

SystemInfo Control 
该控件主要用来查看本地或远程主机的OS和硬件信息,这里需要用到另外两个 
对象ConnectionOptions和ManagementScope,ConnectionOptions主要是设置 
WMI连接信息的,如用户名和密码,这里我们主要用到它的两个属性UserName和 
Password; ManagementScope对象表示WMI的规范,通过该规范可以访问服务器 
和命名空间的路径已及使用ConnectionOptions中的设置 
请看如下代码: 
//Connect to the remote computer 
ConnectionOptions co = new ConnectionOptions(); 
co.Username = textUserID.Text; 
co.Password = textPassword.Text; 
//Point to machine 
System.Management.ManagementScope ms = new 
System.Management.ManagementScope("\\\\" +   
stringHostName + "\\root\\cimv2", co); 
现在我们结合刚才的知识来得到我们要的信息,但我们要得到那些我们想要信息呢? 
那样的话我们就必须要用到ObjectQuery对象,通过它我们可以得到我们想要的查询 
信息.把ObjectQuery对象和ManagementScope对象放入ManagementObjectSearcher对象 
中这样就可以通过我们设置好的规范和我们设置好的查询得到我们想要的结果,当然 
还必须要掉用ManagementObjiectSearcher的Get()方法,它会返回一个ManagementObject 
对象的集合,然后可以通过结合操作来访问到每一个我们要的信息. 
代码如下: 
//Query system for Operating System information 
oq = new System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem"); 
query = new ManagementObjectSearcher(ms,oq); 
queryCollection = query.Get(); 
foreach ( ManagementObject mo in queryCollection) 

//create child node for operating system 
createChildNode(nodeCollection, "Operating System: " + mo["Caption"]); 
createChildNode(nodeCollection, "Version: " + mo["Version"]); 
createChildNode(nodeCollection, "Manufacturer : " + mo["Manufacturer"]); 
createChildNode(nodeCollection, "Computer Name : " +mo["csname"]);

createChildNode(nodeCollection, "Windows Directory : " + mo["WindowsDirectory"]); 

 
要是你只是希望查看到本地主机的信息,你就没必要去创建 ConnectionOption, 
ManagementScope,ObjectQuery 对象,你仅仅只需要把ManagementObjectSearcher 
对象的结果在ManagementObjectCollection集合里去调用Get()方法既可. 
代码如下: 
ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * From 
Win32_OperatingSystem"); 
ManagementObjectCollection queryCollection = query.Get(); 
这里只是介绍了OS信息的方法,其它的如Bios,Memory.Network Connection等信息的查看 
只需要把查询字改改就可以了!(可参考Platform SDK: Windows Management 
Instrumentation) 
Service Control控件介绍: 
该控件要用到一个新的查询字"SELECT * FROM Win


点击查看更多:http://wenku.it168.com/d_000687766.shtml 

相关文章推荐

Asp.net mvc 3.0入门教程之3.2————View视图

本文摘自:http://www.cnblogs.com/libinlink/archive/2011/05/05/2037319.html 改变视图和布局页   首先,您希望改变页面上最上边的标...

ASP.NET MVC3入门教程之参数(数据)传递

本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=98&extra=page%3D1 MVC模式的参数(数据)传递主要涉及到两...

LEADTOOLS入门教程:Leadtools .NET OCR用法

LEADTOOLS OCR功能提供了将光学字符识别(OCR)技术融合到应用程序中的方法。OCR可将位图图像转换为文本。 一旦在系统中安装LEADTOOLS .NET OCR工具包,用户便可以在程序中...

Asp.net mvc 3.0 入门教程之四————模型 Model

本文摘自:http://www.cnblogs.com/libinlink/archive/2011/05/06/2038948.html 添加模型 这一节我们将添加一些类来管理数据库中的电影...

ADO.NET 学习笔记 入门教程

本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63 这是本人在学习ADP.NE...

ASP.NET MVC3入门教程之第一个WEB应用程序

本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=91&extra=page%3D1 上一节,我们已经搭建好了ASP.NET ...

ASP.NET Web API 2 入门教程

译者:jiankunking 出处:http://blog.csdn.net/jiankunking 源码下载HTTP不仅提供web页面服务,在构建公开服务和数据api方面,它也是一个强大的平台。HT...

ADO.NET入门教程(四) 品味Connection对象

1. 理解Connection对象 Connection对象,顾名思义,表示与特定数据源的连接。如果把数据源比作大门,那么连接字符串则是钥匙,而连接对象则是拿着钥匙开门的人。对于ADO.NET而...

TeeChart .NET for iOS图表开发入门教程

去年,TeeChart 为iOS图表开发专门发布了TeeChart NET for iOS(包含在TeeChart Mobile中),相信很多人都对其感兴趣。慧都为大家制作了TeeChart NE...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WMI 使用教程_.NET 入门教程
举报原因:
原因补充:

(最多只允许输入30个字)