C# WMI封装学习笔记

开发 后端
这里介绍我们利用.Net框架System.Management 命名空间所提供的C# WMI封装非常简单的实现了获取逻辑驱动器的详细信息,除了上述信息我们还可以轻松的获取Windows资源大部分信息。

C# WMI封装

在编写某些Windows管理应用程序时,能够从自定义的驱动器选择列表框中进行选择无疑是非常专业的,使用Delphi或者C++的早期版本时我们都必须使用Win32所提供的许多关于获取磁盘信息的API函数来分别获取像卷标、序列号以及剩余空间等信息,现在我们将使用.Net框架和WMI(Windows Management Instrumentation - Windows 管理规范 )来实现上述功能。

若仅简单获取逻辑驱动器的名称列表我们使用.Net框架的Environment.GetLogicalDrives即可,但是若想获得更多关于磁盘驱动器的信息我们可以使用.Net框架下的System.Management 命名空间所提供的类和委托等对大量管理信息和管理事件的集合进行访问,这些信息和事件都与 WMI有关,该命名空间下的类实际上也是对WMI的一种封装,应用程序和服务可以使用从 ManagementObjectSearcher 和 ManagementQuery 派生的类,查询感兴趣的管理信息,例如在磁盘上还剩多少可用空间、当前 CPU 利用率是多少、某一应用程序正连接到哪一数据库等等,现在我们就以 C# 语言编写获取详细的逻辑驱动器信息的示例来展示.Net框架System.Management 命名空间的相关类和WMI编程。

WMI最初是内置在 Windows 2000、Windows XP 和 Windows Server 2003 系列操作系统中核心的管理支持技术,目前WMI 已经是一种规范和基础结构,通过它可以访问、配置、管理和监视几乎所有的 Windows 资源例如磁盘、事件日志、文件、文件夹、文件系统、网络组件、操作系统设置、性能数据、打印机、进程、注册表设置、安全性、服务、共享、用户、组等等。在 WMI 之前,能够以编程方式访问 Windows 资源的惟一方法就是通过 Win32 API,现在我们除了使用WMI 脚本管理任何通过 WMI 公开的 Windows 资源外,还可以通过.Net框架对于C# WMI封装的System.Management 命名空间来轻松实现。

WQL查询语言是 SQL 的一个子集,查询通过包含以下内容限制返回的数据量1、SELECT 子句,指定只返回某些属性的数据;2、WHERE 子句,指定要返回的实例。Win32_LogicalDisk类在默认的本地MSDN里是无法找到的,只有在联机的MSDN里,Win32 and COM Development下的WMI下才能找到,同样可以使用的类还有很多很多,包含登录用户信息的Win32_Account类、包含本地和共享打印机信息的Win32_PrinterShare类等等。Win32_LogicalDisk里所包含的驱动器属性相当丰富。

然后使用该指定的SelectQuery查询创建ManagementObjectSearcher实例,此类是用于检索管理信息的较为常用的入口点之一,实例创建结束,我们需要调用Get方法执行查询以便检索管理对象的集合,当调用该方法时,ManagementObjectSearcher 在指定的范围内执行给定的查询,并返回与 ManagementObjectCollection 中的查询匹配的管理对象的集合,这是就可以在一个循环中遍历集合中的所有对象,并获取我们所感兴趣的对象的属性。

  1. SelectQuery selectQuery = new SelectQuery("select * from win32_logicaldisk");  
  2. ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);  
  3.  
  4. int i=0;  
  5. foreach (ManagementObject disk in searcher.Get()) {  
  6. //获取驱动器盘符  
  7. listView1.Items.Add(disk["Name"].ToString());  

我们利用.Net框架System.Management 命名空间所提供的C# WMI封装非常简单的实现了获取逻辑驱动器的详细信息,除了上述信息我们还可以轻松的获取Windows资源大部分信息,比起使用Win32API要更加简单和有效。该示例程序在Windows XP SP2 + Visual Studio 2005 下编译和调试通过。

【编辑推荐】

  1. C#字符串操作步骤
  2. C#集成开发环境浅析
  3. Visual C# .NET应用程序
  4. C# TimeLabel控件详解
  5. C#复合控件开发技术
责任编辑:佚名 来源: 博客园
相关推荐

2009-08-20 15:02:57

C# If语句

2009-08-12 15:50:40

C# ListBox

2009-08-13 18:21:52

C#学习笔记

2009-08-12 09:28:36

C# WiteOne

2009-08-28 15:32:39

C#利用WMI获取数据

2009-08-21 17:53:28

C#查询结果

2009-08-12 10:46:54

C#命名空间

2009-08-25 15:26:03

C#调用ImOK

2009-08-24 15:46:46

C# SmartPho

2009-08-26 10:48:44

C# SQL命令

2009-08-31 15:27:33

C# TreeView

2009-08-27 16:53:01

C#委托C#事件

2009-08-13 11:10:32

C#基础概念

2009-08-19 15:59:24

C#参数类型

2009-08-14 17:38:08

C#改写方法

2009-08-14 15:54:12

C#编程语言

2009-09-01 11:28:32

C#使用函数重载

2009-08-27 11:16:40

C# sealed修饰

2009-08-14 09:41:03

C#遗传算法

2009-08-13 10:47:29

C#创建验证码
点赞
收藏

51CTO技术栈公众号