【WMI】WMI For C#/dotNet 用WMI获取系统信息

原创 2007年09月15日 22:30:00
想C++/COM一样,通过C#使用dotNet一样可以进行查询和调用方法

查询的基本过程如下:
1.引用WMI的.NET类库
 在项目->引用里面添加对System.Management命名空间所在dll:System.Management.dll的引用。
2.创建ManagementObjectSearcher类的实例
ManagementObjectSearcher类用于根据指定的查询或枚举检索管理对象的集合。
3.执行查询
ManagementObjectSearcher类的Get方法用于执行查询
A同步方式:
        默认的查询方式,执行查询方法以后查询线程等待方法返回,查询方法在得到所有结果集以后才返回。这种方式适合与查询数据量不大,查询时间很短的情况。
       同步情况下,返回一个 ManagementObjectCollection,它包含匹配指定查询的对象。
ManagementObjectCollection result = search.Get();
foreach (ManagementObject info in result)
{
         Console.WriteLine(
"Name:  {0}", info["name"])
}
B异步方式:
        异步查询需要在执行查询方法的时候,需要传入类型为ManagementOperationObserver的参数。查询到对象后由ManagementOperationObserver对象的ObjectReady事件通知,查询得到的对象在ObjectReady事件参数的NewObject属性中。
        异步情况下,每查询到一个对象,触发一次ManagementOperationObserver类的ObjectReady事件,我们在事件处理过程中获取对象的值。
ManagementOperationObserver results = new
            ManagementOperationObserver();
        
// 连接事件处理程序
results.ObjectReady += new 
            ObjectReadyEventHandler(
this.NewObject);
results.Completed 
+= new 
            CompletedEventHandler(
this.Done);

searcher.Get(results);
//事件处理过程:
private void NewObject(object sender,
ObjectReadyEventArgs obj) 
{
    Console.WriteLine(
"Name:  {0}", info["name"])
}
    
private void Done(object sender,
    CompletedEventArgs obj) 
{
     isCompleted 
= true;
}
4.处理结果
        同步查询方式下,枚举ManagementObjectCollection对象里面的元素,即可获得匹配对象;异步方式下, 通过ObjectReadyEventArgs对象的NewObject属性取出匹配对象。

调用方法的基本过程如下:
1.取得Provider类或者它的实例对象
ManagementClass processClass = new ManagementClass("Win32_Process");
        这行代码结果是取得了Win32_Process的类,但没有生成它的实例。通过它,只能调用Win32_Process的静态方法。
ManagementObject classInstance = 
                    
new ManagementObject("root/CIMV2"
                    
"Win32_Service.Name='PlugPlay'",
                    
null);
        这行代码取得了Win32_Service类的一个实例,通过它,可以调用Win32_Service的静态方法和实例方法。
2.生成Provider提供方法的参数的对象
        提供一个object数组,或者ManagementBaseObject类型的对象,里面存储调用函数的参数,然后将object数组或ManagementBaseObject类型的对象传给执行provider方法的函数。
3.调用方法
        调用ManagementClass或ManagementObject的InvokeMethod()方法,执行provider的方法。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

VC利用WMI获取系统信息..

  • 2009-06-05 03:00
  • 368KB
  • 下载

【C++】WMI获取系统硬件信息(CPU/DISK/NetWork etc)

官网找到一个例子,根据例子修改下可以获取很多信息 #define _WIN32_DCOM #include using namespace std; #include #include #p...

[问题记录.dotnet]取网卡信息报错"找不到"-WMI - Not found

System.Management.ManagementException: 找不到 System.Management.ManagementException: Not found 错误的解决

WMI获取系统信息

// MyDlgExDlg.cpp : 实现文件    //        #include "stdafx.h"  ...

VC6应用WMI获取系统信息

花费两天左右时间,总算可以在VC6下使用WMI技术了,现将遇到的问题及解决方法记录一下。起因是为了获取系统的硬件信息,经查阅可以使用WMI技术来实现,于CodeProject网站上下载了vc6使用WM...
  • tzxx
  • tzxx
  • 2011-05-02 23:28
  • 3573

wmi 引用Management获取CPU、内存、硬盘等系统及硬件信息

前几天闲着没事,想做一个显示电脑硬件信息的小窗体看看,网上看到了不少方法,最多的是利用wmi获取硬件信息 WMI,是Windows 2K/XP管理系统的核心;对于其他的Win32操作系统,WMI...

主机性能监控之wmi 获取系统信息及内存性能信息

欢迎转帖 请保持文本完整并注明出处   这里参考了http://www.cnblogs.com/lxcsmallcity/archive/2009/10/11/1580803.html  ...

C/C++通过WMI和系统API函数获取获取系统硬件(cpu,内存,显卡,网卡)配置信息

前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU、内存、网络利用率等)和读取服务器的硬件配置参数的接口供项目组使用,就是一个类似于鲁大师之类的东东吧...      当然第一想法肯定是利...

C/C++通过WMI和系统API函数获取获取系统硬件配置信息

前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU、内存、网络利用率等)和读取服务器的硬件配置参数的接口供项目组使用,就是一个类似于鲁大师之类的东东吧...      当然第一想法肯定是利...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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