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等等.我们可能通过这在的实例化对象得到我们想要得到的系统性能数据,并且能够根据自己的需要将数据通过不同的形式显示出来.