`
mingzhuer18
  • 浏览: 32892 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C#开发 WMI

    博客分类:
  • WMI
阅读更多

准备进行Hyper-v WMI的开发,在网上找到了比较实用的英文教程,在这里简单翻一下,原文地址是http://www.codeproject.com/KB/server-management/Intro2WMI.aspx#

 

创建一个客户端程序, 该程序通过WMI查询系统的逻辑磁盘的属性

WMI类可以被实例化,通过WMI查询语句可以查询对象。WMI查询语句可以像SQL查询语句一样使用,这里有详细的步骤来说明如何查询实例化的WMI对象。如果我们要使用Win32_LogicalDisks这个类,首先我们要熟悉这个类,熟悉这个类暴露的方法和属性。Win32_LogicalDisks这个类是从CIM_LogicalDisk 继承的,下面内容显示了再MSDN中Win32_LogicalDisks是如何定义的,清楚了解你的程序需要用到这个类的那些内容是非常重要的。

class Win32_LogicalDisk : CIM_LogicalDisk
{
  uint16   Access;
  uint16   Availability;
  uint64   BlockSize;
  string   Caption;
  boolean  Compressed;
  uint32   ConfigManagerErrorCode;
  boolean  ConfigManagerUserConfig;
  string   CreationClassName;
  string   Description;
  string   DeviceID;
  uint32   DriveType;
  boolean  ErrorCleared;
  string   ErrorDescription;
  string   ErrorMethodology;
  string   FileSystem;
  uint64   FreeSpace;
  datetime InstallDate;
  uint32   LastErrorCode;
  uint32   MaximumComponentLength;
  uint32   MediaType;
  string   Name;
  uint64   NumberOfBlocks;
  string   PNPDeviceID;
  uint16   PowerManagementCapabilities[];
  boolean  PowerManagementSupported;
  string   ProviderName;
  string   Purpose;
  boolean  QuotasDisabled;
  boolean  QuotasIncomplete;
  boolean  QuotasRebuilding;
  uint64   Size;
  string   Status;
  uint16   StatusInfo;
  boolean  SupportsDiskQuotas;
  boolean  SupportsFileBasedCompression;
  string   SystemCreationClassName;
  string   SystemName;
  boolean  VolumeDirty;
  string   VolumeName;
  string   VolumeSerialNumber;
};

MSDN上有非常好的关于所有WMI类的文档,问题是我怎么知道在一个系统里有那些类?这很简单, ...,更好的选择是去使用一个公共的免费的资源,例如CIM Browser.

这里我要详细说下当你使用WMI类时你必须要使用的标准步骤。一旦你了解了这些步骤,你将会使用其他WMI类,因为步骤都是一样的。

步骤1:

导入引用System.Management

using System.Management;

下面的类是经常用到的

ConnectionOptions
ManagementScope
ObjectQuery
ManagementObjectSearcher
ManagementObjectCollection
ManagementObject

 

步骤2:

如果要连接远端服务器,创建一个ConnectionOptions对象,并给Username和Password赋值,

ConnectionOptions oConnect = new ConnectionOptions();
oConnect.Username = "CodeProject";
oConnect.Password = "Welcome";

 

步骤3:

我们需要设置一个命名空间,这个命名空间指出了我们将在哪里执行我们的操作,同时也是WMI类和CIM类注册的路径(这地方不是很清楚什么意思)。所以接下来的操作将在这个命名空间的背景下执行。下面代码显示了如何创建和设置management scope,\Root\CimV2 是在Win32_LogicalDisk 里定义的命名空间的路径。

System.Management.ManagementScope oMgmtScope = new System.Management.ManagementScope("\\root\\cimv2",oConnect );

 

步骤4:

写WMI的查询语句。

System.Management.ObjectQuery oQuery = new
                System.Management.ObjectQuery("select DeviceID, DriveType, FileSystem, FreeSpace,Size,Name from Win32_LogicalDisk where DriveType=3");

 

步骤5:

执行了查询语句

ManagementObjectSearcher oSearch = new ManagementObjectSearcher(oMgmtScope,oQuery);

 

步骤6:

我们执行了查询语句之后,还需要将结果保存到 ManagementCollection对象中,然后可以循环这个对象并且获得想要的值。

ManagementObjectCollection oCollection = oSearch.Get();

 

步骤7:

循环ManagementCollection,并取值

//loop through all the logical drives and write out
//the details for the attributes requested
foreach( ManagementObject oReturnCollection in oCollection )
{   
DeviceID, DriveType, FileSystem
    //DeviceID
     Console.WriteLine("Device ID : " + oReturnCollection["DeviceID"].ToString());
     //DriveType
     Console.WriteLine("Drive Type : " + oReturnCollection["DriveType"].ToString());  
  
     //FileSystem
     Console.WriteLine("File System : " + oReturnCollection["FileSystem"].ToString());
    // Disk name
    Console.WriteLine("Name : " + oReturnCollection["Name"].ToString());
    // Free Space in bytes
    Console.WriteLine("FreeSpace: " + oReturnCollection["FreeSpace"].ToString());
    // Size in bytes
    Console.WriteLine("Size: " + oReturnCollection["Size"].ToString());
}

 

上面就是对c#使用WMI的一个介绍。你可以看到,不管你用什么WMI类,你都可以执行上面的这些步骤。你需要知道的是你要连接的命名空间以及你要使用哪个类。...

 

分享到:
评论

相关推荐

    C# 调用WMI 获取系统信息

    总的来说,通过C#调用WMI获取系统信息是Windows开发中的一个重要技能,它可以帮助开发者或系统管理员获取详细的系统状态,进行故障排查、性能监控和资源管理。了解并熟练运用这一技术对于提升工作效率和解决问题具有...

    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....

    C#用WMI读取注册表

    在IT行业中,C#是一种广泛使用的编程语言,尤其在Windows应用程序开发中。WMI(Windows Management Instrumentation)是微软提供的一种强大的系统管理工具,它允许开发者通过编程接口访问和操作系统的各种信息,包括...

    C#利用WMI 控制远程计算机

    **C# 利用 WMI 控制远程计算机** Windows Management Instrumentation(WMI)是微软提供的一个管理系统资源的标准接口,允许应用程序访问和控制操作系统、硬件设备和服务等信息。C#作为.NET Framework的一部分,...

    c#利用wmi配置ip

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows应用程序时。WMI(Windows Management Instrumentation)是微软提供的一种强大的系统管理工具,它允许程序员通过标准接口访问和操作系统的各种信息,包括...

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

    ### C#中使用WMI控制远程计算机的知识点详解 #### WMI简介 Windows Management Instrumentation (WMI) 是Microsoft提供的一套用于管理Windows系统的方法和技术。它为管理员提供了查询和控制本地或远程计算机上的...

    用 C# WMI 写的 U盘检测器(源代码)

    在这个场景中,"用C# WMI写的U盘检测器"是一个利用WMI技术来监控和获取USB存储设备(如U盘)详细信息的应用程序。 首先,让我们深入了解C#与WMI的结合如何工作。在C#中,我们可以通过System.Management命名空间来...

    C#WMI编程(读取各种硬件)源码20121210

    C#WMI编程(读取各种硬件)源码 功能介绍: WMI读取各种硬件,基本所有的硬件信息访问都有 进程控制 开机启动项管理 网络连接 硬件信息 系统资源 服务 工具 注意: 开发环境为Visual Studio 2010

    C#WMI编程(读取各种硬件)源码.zip

    C#WMI编程(读取各种硬件)源码 功能介绍: WMI读取各种硬件,基本所有的硬件信息访问都有 进程控制 开机启动项管理 网络连接 硬件信息 系统资源 服务 工具 注意: 开发环境为Visual Studio 2010

    用C#开发较完整的Windows任务管理器

    下面将详细介绍如何利用C#、WMI和API来开发这样一个工具。 1. **Windows Management Instrumentation (WMI)**: WMI是微软提供的一个标准的管理基础设施,它允许开发者通过脚本或编程方式访问和管理Windows系统的...

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

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

    c#获取打印机当前打印状态完整源码

    在C#编程环境中,获取打印机当前打印状态是常见的需求,特别是在开发与打印相关的应用程序时。以下将详细讲解如何实现这一功能,以及与之相关的技术点。 首先,我们需要了解Windows操作系统提供的打印API,如...

    利用C#操作WMI指南

    它提供与系统管理员信息和基础WMI API交互的标准方法,主要由系统管理应用程序开发人员和系统管理员用来访问和操作系统管理信息;它可用来生成组织和管理系统信息的工具,使系统管理人员能够更密切的监视系统活动。 ...

    C#WMI读取计算机硬件的信息源代码

    本教程主要聚焦于使用C#语言通过Windows Management Instrumentation(WMI)来读取计算机硬件信息。WMI是Microsoft提供的一种标准的管理接口,它允许开发者访问和管理本地或远程系统的配置信息。 首先,我们来看...

    WMI 编程练习(C#版)

    总结,WMI编程在C#中提供了强大的系统管理能力,结合VS2005开发环境,可以轻松实现对Windows系统的深度监控和管理。通过学习和实践这些示例,开发者能够更好地理解和运用WMI,提升Windows应用程序的管理功能。

    C#开发典型模块大全

    第1章 认识C#及开发环境 1.1 C#概述 2 1.1.1 C#发展历程 2 1.1.2 C#语言编程环境 2 1.2 .NET Framework 2.0简介 2 1.2.1 什么是.NET Framework 2.0 2 1.2.2 .NET Framework 2.0特性 3 1.3 安装集成...

    c# 获取CPU温度(非WMI,直接读取硬件)

    4. **C#编程**:作为主要的开发语言,需要熟悉C#的基本语法、类库和面向对象编程。 5. **多平台兼容性**:确保代码在不同版本的Windows系统上都能正常工作,可能需要处理不同系统之间的差异。 6. **异常处理**:在...

    通过WMI终止一个进程

    ### 通过WMI终止一个进程 #### 知识点概览 ...了解如何使用WMI不仅对于日常的系统管理非常有用,而且对于开发复杂的系统管理脚本也至关重要。希望本文能够帮助您更好地理解和使用WMI进行进程管理。

    WMI.rar_wmi

    Windows Management Instrumentation(WMI)是微软开发的一种管理规范,用于提供系统管理和脚本编写的信息。它是Windows操作系统的核心组成部分,允许应用程序和脚本语言访问、配置和管理运行在Windows环境中的硬件...

    基于C#的获取本地CPU的编号(WMI应用)

    本篇文章将深入探讨如何使用C#语言,结合Windows Management Instrumentation(WMI)技术来获取本地CPU的编号。WMI是Microsoft提供的一种系统管理接口,允许开发者通过编程方式访问和管理Windows操作系统以及其上的...

Global site tag (gtag.js) - Google Analytics