Win32 ** 类及其管理对象 ** ** **
在上一节中 , 我们已经接触到了访问管理信息中的 WMI 类名称 , 如:
diskman = new ManagementClass("Win32_LogicalDisk")
” Win32_LogicalDisk ” 就是代表 WMI类中的Win32_LogicalDisk类,在本节我们将了解到更多的关于WMI类的内容.WMI提供了一系列的WMI类供程序人员使用,通过这些WMI类,我们就可以进行类似于查询等关于WMI的操作,由于WMI类涉及到系统的各个方面,所以就将其分7个子类,分别是:
n ** WMI System Classes **
n ** WMI System Properties **
n ** Win32 Classes **
n ** CIM Classes **
n ** Standard Consumer Classes **
n ** MSFT Classes **
n ** MSMCA Classes **
n ** WMI C++ Classes **
由于篇幅原因 , 在本节就只讲解 Win32_Classes 里面的类 , 其余的分类可以自己去查找 MSDN 中的内容 .
Win32_Classes子类中的类位于 root\cimv2 命名空间中 , 包含了大多数与系统操作相关的类 , 如前面所述的 Win32_LogicalDisk 类 , 后面将会介绍到的 Win32_Process 类等 . 在 Win32_Classes 子类里面又细分为 5 个大 , 分别是 :
n ** Computer system hardware ( ** ** 计算机系统硬件类 ** ** ) **
n ** Operating system ( ** ** 操作系统类 ** ** ) **
n ** Installed applications ( ** ** 安装程序类 ** ** ) **
n ** WMI service management (WMI ** ** 服务管理类 ** ** ) **
n ** Performance counters ( ** ** 性能计数器类 ** ** ) **
下面就来一一介绍这些子类的作用及其主要类成员 .
** Computer system hardware **
Computer system hardware 这个子类中包含了与硬件信息相关的类 , 如 Win32_CDROMDrive , Win32_DiskDrive , Win32_BIOS , Win32_NetworkAdapter 等 , 通过使用这些类的实例化对象 , 我们就可以知道此计算机的硬件组成 , 此时此刻的硬件信息 , 比如我们通过 WQL 方式查询得到当前计算机的 Win32_DiskDrive 类的实例化对象 , 就可以知道当前计算机的磁盘驱动器的名称 , 它的设备号 , 它的型号 , 以及它的容量大小等 . 以下是通过程序方式得到上述信息 :
//MSDN中Win32_DiskDrive类的定义 ……
class Win32_DiskDrive : CIM_DiskDrive
{
string _ DeviceID _ ;
string _ Model _ ;
string _ Name _ ;
uint64 _ Size _ ;
……
};
//获取本机磁盘驱动器的属性
public static void FetchDiskDiveProperty()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_DiskDrive");
foreach (ManagementObject diskDrives in searcher.Get())
{
Console.WriteLine("diskDrives Name = " + diskDrives["Name"]);
Console.WriteLine("diskDrives DeviceID = " + diskDrives["DeviceID"]);
Console.WriteLine("diskDrives Model = " + diskDrives["Model"]);
Console.WriteLine("diskDrives Size = " + diskDrives["Size"]);
}
}
//上述代码是通过WQL方式实现管理对象的信息查询的,
** Performance counters **
Operating system子类中包含了与操作系统相关的类成员,如Win32_COMApplication, Win32_Environment, Win32_DiskPartition, Win32_PageFile, Win32_BootConfiguration, Win32_Process等,通过使用上述类,我们就可获得诸如当前系统环境设置,磁盘的分区信息,系统的页面文件的放置位置,系统的启动信息以及当前系统中运行着的线程的信息.同Computer system hardware子类中的Win32_DiskDrive类一样,我们也可以通过使用相同的方法得到其属性(WQL方式查询,同上),但是对于像Win32_Process这种除了属性外,还有函数的类而言,是不能通过上述方式来直接调用其函数的,得通过别的对象间接的调用它的函数.具体怎么去调用这种函数将会在下一节中给出实例说明的.
** Installed applications **
Installed applications 子类中包含了系统中通过 Windows Installer 方式安装软件的相关的类 , 如 Win32_Binary , Win32_RegistryAction 类等 , 通过使用这些类的实例化对象 , 我们就可以得到通过 Windows Installer 方式安装的软件的文件说明 , 安装用到过的文件 , 写入注册表的信息等等 . 其对象的属性的方法同上 , 即通过 WQL 方式查询操作 .
** WMI service management **
WMI service management 子类中了有关管理 WMI 服务相关的类 , 这些类是用来管理 WMI 服务它自身的 , 并不是用来管理计算机系统或是组织网络的 , 它的任务包括配置 WMI, 管理 WMI 的操作 , 使其处于最佳的工作状态 . 它的类成员不多 , 只有三个 , Win32_MethodParameterClass , Win32_WMISetting , Win32_WMIElementSetting .
** Performance counters **
Performance counters 子类包含系统性能计数器数据及格式化后的性能计数器数据的类的成员 . 如 Win32_PerfFormattedData_PerfOS_Memory , Win32_PerfRawData_PerfOS_Memory , Win32_PerfFormattedData_PerfProc_Process , Win32_PerfFormattedData_Tcpip_TCP 等等 . 我们可能通过这在的实例化对象得到我们想要得到的系统性能数据 , 并且能够根据自己的需要将数据通过不同的形式显示出来 .