在VB中使用WMI获取系统硬件和软件有关信息
简介:
WMI是英文Windows Management
Instrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然你必须要拥有足够的权限),比如:重启,关机,关闭进程,创建进程等。
实例如下:
'用WMI,先工程-引用 Microsoft WMI Scripting V1.1 Library
获取显卡/声卡/内存/操作系统的信息
声卡信息
Private Sub wmiSoundDeviceInfo()
Dim wmiObjSet As SWbemObjectSet
Dim obj As SWbemObject
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_SoundDevice")
On Local Error Resume Next
For Each obj In wmiObjSet
MsgBox obj.ProductName
Next
End Sub
显卡信息
Private Sub wmiVideoControllerInfo()
Dim wmiObjSet As SWbemObjectSet
Dim obj As SWbemObject
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_VideoController")
On Local Error Resume Next
For Each obj In wmiObjSet
MsgBox obj.VideoProcessor
Next
End Sub
内存信息
Private Sub wmiPhysicalMemoryInfo()
Dim wmiObjSet As SWbemObjectSet
Dim obj As SWbemObject
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_PhysicalMemory")
On Local Error Resume Next
For Each objItem In wmiObjSet
Debug.Print "BankLabel: " & objItem.BankLabel
Debug.Print "Capacity: " & objItem.Capacity
Debug.Print "Caption: " & objItem.Caption
Debug.Print "CreationClassName: " & objItem.CreationClassName
Debug.Print "DataWidth: " & objItem.DataWidth
Debug.Print "Description: " & objItem.Description
Debug.Print "DeviceLocator: " & objItem.DeviceLocator
Debug.Print "FormFactor: " & objItem.FormFactor
Debug.Print "HotSwappable: " & objItem.HotSwappable
Debug.Print "InstallDate: " & objItem.InstallDate
Debug.Print "InterleaveDataDepth: " & objItem.InterleaveDataDepth
Debug.Print "InterleavePosition: " & objItem.InterleavePosition
Debug.Print "Manufacturer: " & objItem.Manufacturer
Debug.Print "MemoryType: " & objItem.MemoryType
Debug.Print "Model: " & objItem.Model
Debug.Print "Name: " & objItem.name
Debug.Print "OtherIdentifyingInfo: " & objItem.OtherIdentifyingInfo
Debug.Print "PartNumber: " & objItem.PartNumber
Debug.Print "PositionInRow: " & objItem.PositionInRow
Debug.Print "PoweredOn: " & objItem.PoweredOn
Debug.Print "Removable: " & objItem.Removable
Debug.Print "Replaceable: " & objItem.Replaceable
Debug.Print "SerialNumber: " & objItem.SerialNumber
Debug.Print "SKU: " & objItem.SKU
Debug.Print "Speed: " & objItem.Speed
Debug.Print "Status: " & objItem.Status
Debug.Print "Tag: " & objItem.Tag
Debug.Print "TotalWidth: " & objItem.TotalWidth
Debug.Print "TypeDetail: " & objItem.TypeDetail
Debug.Print "Version: " & objItem.Version
Next
End Sub
操作系统信息
Private Sub Command1_Click()
Dim wmiObjSet As SWbemObjectSet
Dim obj As SWbemObject
Dim msg As String
Dim dtb As String
Dim d As String
Dim t As String
Dim bias As Long
On Local Error Resume Next
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_OperatingSystem")
For Each obj In wmiObjSet
MsgBox "你当前使用的系统是 " & obj.Caption
Next
End Sub
说明:
大家可能会发现一个规律,实际上WMI对信息的提取都是使用了WIN32_类库名这样的规律,下列表格就是微软的操作系统各种硬件类的描述
其它WMI管理的类的信息在
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/accessing_hardware_and_software_through_wmi.asp
可以找到,其中也还有部分示例代码
简单Win_32类表
Microsoft® Windows® classes give you the means to manipulate a variety of objects. The following table identifies the categories of Windows classes.
Category | Description |
---|---|
Computer system hardware | Classes that represent hardware related objects. |
Operating system | Classes that represent operating system related objects. |
Installed applications | Classes that represent software related objects. |
WMI service management | Classes used to manage WMI. |
Performance counters | Classes that represent formatted and raw performance data.
|
he Cooling Devices subcategory groups classes that represent instrumentable fans, temperature probes, and refrigeration devices.
Class | Description |
---|---|
Win32_Fan | Represents the properties of a fan device in the computer system. |
Win32_HeatPipe | Represents the properties of a heat pipe cooling device. |
Win32_Refrigeration | Represents the properties of a refrigeration device. |
Win32_TemperatureProbe | Represents the properties of a temperature sensor (electronic thermometer). |
The Input Devices subcategory groups classes that represent keyboards and pointing devices.
Class | Description |
---|---|
Win32_Keyboard | Represents a keyboard installed on a Windows system. |
Win32_PointingDevice | Represents an input device used to point to and select regions on the display of a Windows computer system. |
Classes in the Mass Storage subcategory represent storage devices such as hard disk drives, CD-ROM drives, and tape drives.
Class | Description |
---|---|
Win32_AutochkSetting | Represents the settings for the autocheck operation of a disk. |
Win32_CDROMDrive | Represents a CD-ROM drive on a Windows computer system. |
Win32_DiskDrive | Represents a physical disk drive as seen by a computer running the Windows operating system. |
Win32_FloppyDrive | Manages the capabilities of a floppy disk drive. |
Win32_PhysicalMedia | Represents any type of documentation or storage medium. |
Win32_TapeDrive | Represents a tape drive on a Windows computer. |
The Motherboard, Controllers, and Ports subcategory groups classes that represent system devices. Examples include system memory, cache memory, and controllers.
Class | Description |
---|---|
Win32_1394Controller | Represents the capabilities and management of a 1394 controller. |
Win32_1394ControllerDevice | Relates the high-speed serial bus (IEEE 1394 Firewire) Controller and the CIM_LogicalDevice instance connected to it. |
Win32_AllocatedResource | Relates a logical device to a system resource. |
Win32_AssociatedProcessorMemory | Relates a processor and its cache memory. |
Win32_BaseBoard | Represents a baseboard (also known as a motherboard or system board). |
Win32_BIOS | Represents the attributes of the computer system's basic input/output services (BIOS) that are installed on the computer. |
Win32_Bus | Represents a physical bus as seen by a Windows operating system. |
Win32_CacheMemory | Represents cache memory (internal and external) on a computer system. |
Win32_ControllerHasHub | Represents the hubs downstream from the universal serial bus (USB) controller. |
Win32_DeviceBus | Relates a system bus and a logical device using the bus. |
Win32_DeviceMemoryAddress | Represents a device memory address on a Windows system. |
Win32_DeviceSettings | Relates a logical device and a setting that can be applied to it. |
Win32_DMAChannel | Represents a direct memory access (DMA) channel on a Windows computer system. |
Win32_FloppyController | Represents the capabilities and management capacity of a floppy disk drive controller. |
Win32_IDEController | Represents the capabilities of an Integrated Drive Electronics (IDE) controller device. |
Win32_IDEControllerDevice | Association class that relates an IDE controller and the logical device. |
Win32_InfraredDevice | Represents the capabilities and management of an infrared device. |
Win32_IRQResource | Represents an interrupt request line (IRQ) number on a Windows computer system. |
Win32_MemoryArray | Represents the properties of the computer system memory array and mapped addresses. |
Win32_MemoryArrayLocation | Relates a logical memory array and the physical memory array upon which it exists. |
Win32_MemoryDevice | Represents the properties of a computer system's memory device along with it's associated mapped addresses. |
Win32_MemoryDeviceArray | Relates a memory device and the memory array in which it resides. |
Win32_MemoryDeviceLocation | Association class that relates a memory device and the physical memory on which it exists. |
Win32_MotherboardDevice | Represents a device that contains the central components of the Windows computer system. |
Win32_OnBoardDevice | Represents common adapter devices built into the motherboard (system board). |
Win32_ParallelPort | Represents the properties of a parallel port on a Windows computer system. |
Win32_PCMCIAController | Manages the capabilities of a Personal Computer Memory Card Interface Adapter (PCMCIA) controller device. |
Win32_PhysicalMemory | Represents a physical memory device located on a computer as available to the operating system. |
Win32_PhysicalMemoryArray | Represents details about the computer system's physical memory. |
Win32_PhysicalMemoryLocation | Relates an array of physical memory and its physical memory. |
Win32_PNPAllocatedResource | Represents an association between logical devices and system resources. |
Win32_PNPDevice | Relates a device (known to Configuration Manager as a PNPEntity), and the function it performs. |
Win32_PNPEntity | Represents the properties of a Plug and Play device. |
Win32_PortConnector | Represents physical connection ports, such as DB-25 pin male, Centronics, and PS/2. |
Win32_PortResource | Represents an I/O port on a Windows computer system. |
Win32_Processor | Represents a device capable of interpreting a sequence of machine instructions on a Windows computer system. |
Win32_SCSIController | Represents a small computer system interface (SCSI) controller on a Windows system. |
Win32_SCSIControllerDevice | Relates a SCSI controller and the logical device (disk drive) connected to it. |
Win32_SerialPort | Represents a serial port on a Windows system. |
Win32_SerialPortConfiguration | Represents the settings for data transmission on a Windows serial port. |
Win32_SerialPortSetting | Relates a serial port and its configuration settings. |
Win32_SMBIOSMemory | Represents the capabilities and management of memory-related logical devices. |
Win32_SoundDevice | Represents the properties of a sound device on a Windows computer system. |
Win32_SystemBIOS | Relates a computer system (including data such as startup properties, time zones, boot configurations, or administrative passwords) and a system BIOS (services, languages, system management properties). |
Win32_SystemDriverPNPEntity | Relates a Plug and Play device on the Windows computer system and the driver that supports the Plug and Play device. |
Win32_SystemEnclosure | Represents the properties associated with a physical system enclosure. |
Win32_SystemMemoryResource | Represents a system memory resource on a Windows system. |
Win32_SystemSlot | Represents physical connection points including ports, motherboard slots and peripherals, and proprietary connections points. |
Win32_USBController | Manages the capabilities of a universal serial bus (USB) controller. |
Win32_USBControllerDevice | Relates a USB controller and the CIM_LogicalDevice instances connected to it. |
Win32_USBHub | Represents the management characteristics of a USB hub. |
The Networking Devices subcategory groups classes that represent the network interface controller, its configurations, and its settings.
Class | Description |
---|---|
Win32_NetworkAdapter | Represents a network adapter on a Windows system. |
Win32_NetworkAdapterConfiguration | Represents the attributes and behaviors of a network adapter. The class is not guaranteed to be supported after the ratification of the Distributed Management Task Force (DMTF) CIM network specification. |
Win32_NetworkAdapterSetting | Relates a network adapter and its configuration settings. |
The Power subcategory groups classes that represent power supplies, batteries, and events related to these devices.
Class | Description |
---|---|
Win32_AssociatedBattery | Relates a logical device and the battery it is using. |
Win32_Battery | Represents a battery connected to the computer system. |
Win32_CurrentProbe | Represents the properties of a current monitoring sensor (ammeter). |
Win32_PortableBattery | Represents the properties of a portable battery, such as one used for a notebook computer. |
Win32_PowerManagementEvent | Represents power management events resulting from power state changes. |
Win32_UninterruptiblePowerSupply | Represents the capabilities and management capacity of an uninterruptible power supply (UPS). |
Win32_VoltageProbe | Represents the properties of a voltage sensor (electronic voltmeter). |
The Printing subcategory groups classes that represent printers, printer configurations, and print jobs.
Class | Description |
---|---|
Win32_DriverForDevice | Relates a printer to a printer driver. |
Win32_Printer | Represents a device connected to a Windows computer system that is capable of reproducing a visual image on a medium. |
Win32_PrinterConfiguration | Defines the configuration for a printer device. |
Win32_PrinterController | Relates a printer and the local device to which the printer is connected. |
Win32_PrinterDriver | Represents the drivers for a Win32_Printer instance. |
Win32_PrinterDriverDll | Relates a local printer and its driver file (not the driver itself). |
Win32_PrinterSetting | Relates a printer and its configuration settings. |
Win32_PrintJob | Represents a print job generated by a Windows application. |
Win32_TCPIPPrinterPort | Represents a TCP/IP service access point. |
The Telephony subcategory groups classes that represent "plain old telephone" modem devices and their associated serial connections.
Class | Description |
---|---|
Win32_POTSModem | Represents the services and characteristics of a Plain Old Telephone Service (POTS) modem on a Windows system. |
Win32_POTSModemToSerialPort | Relates a modem and the serial port the modem uses. |
The Video and Monitors subcategory groups classes that represent monitors, video cards, and their associated settings.
Class | Description |
---|---|
Win32_DesktopMonitor | Represents the type of monitor or display device attached to the computer system. |
Win32_DisplayConfiguration | Represents configuration information for the display device on a Windows system. This class is obsolete. In place of this class, use the properties in the Win32_VideoController, Win32_DesktopMonitor, and CIM_VideoControllerResolution classes. |
Win32_DisplayControllerConfiguration | Represents the video adapter configuration information of a Windows system. This class is obsolete. In place of this class, use the properties in the Win32_VideoController, Win32_DesktopMonitor, and CIM_VideoControllerResolution classes. |
Win32_VideoConfiguration | This class has been eliminated from Windows XP and later; attempts to use it will generate a fatal error. In place of this class, use the properties contained in the Win32_VideoController, Win32_DesktopMonitor, and CIM_VideoControllerResolution classes. |
Win32_VideoController | Represents the capabilities and management capacity of the video controller on a Windows computer system. |
Win32_VideoSettings | Relates a video controller and video settings that can be applied to it. |
而每一个类都有对应的数据结构如
显卡
class Win32_VideoController : CIM_PCVideoController { uint16 AcceleratorCapabilities[]; string AdapterCompatibility; string AdapterDACType; uint32 AdapterRAM; uint16 Availability; string CapabilityDescriptions[]; string Caption; uint32 ColorTableEntries; uint32 ConfigManagerErrorCode; boolean ConfigManagerUserConfig; string CreationClassName; uint32 CurrentBitsPerPixel; uint32 CurrentHorizontalResolution; uint64 CurrentNumberOfColors; uint32 CurrentNumberOfColumns; uint32 CurrentNumberOfRows; uint32 CurrentRefreshRate; uint16 CurrentScanMode; uint32 CurrentVerticalResolution; string Description; string DeviceID; uint32 DeviceSpecificPens; uint32 DitherType; datetime DriverDate; string DriverVersion; boolean ErrorCleared; string ErrorDescription; uint32 ICMIntent; uint32 ICMMethod; string InfFilename; string InfSection; datetime InstallDate; string InstalledDisplayDrivers; uint32 LastErrorCode; uint32 MaxMemorySupported; uint32 MaxNumberControlled; uint32 MaxRefreshRate; uint32 MinRefreshRate; boolean Monochrome; string Name; uint16 NumberOfColorPlanes; uint32 NumberOfVideoPages; string PNPDeviceID; uint16 PowerManagementCapabilities[]; boolean PowerManagementSupported; uint16 ProtocolSupported; uint32 ReservedSystemPaletteEntries; uint32 SpecificationVersion; string Status; uint16 StatusInfo; string SystemCreationClassName; string SystemName; uint32 SystemPaletteEntries; datetime TimeOfLastReset; uint16 VideoArchitecture; uint16 VideoMemoryType; uint16 VideoMode; string VideoModeDescription; string VideoProcessor; };
声卡等
class Win32_SoundDevice : CIM_LogicalDevice
{
uint16 Availability;
string Caption;
uint32 ConfigManagerErrorCode;
boolean ConfigManagerUserConfig;
string CreationClassName;
string Description;
string DeviceID;
uint16 DMABufferSize;
boolean ErrorCleared;
string ErrorDescription;
datetime InstallDate;
uint32 LastErrorCode;
string Manufacturer;
uint32 MPU401Address;
string Name;
string PNPDeviceID;
uint16 PowerManagementCapabilities[];
boolean PowerManagementSupported;
string ProductName;
string Status;
uint16 StatusInfo;
string SystemCreationClassName;
string SystemName;
};
class Win32_PrintJob : CIM_Job
{
string Caption;
string DataType;
string Description;
string Document;
string DriverName;
datetime ElapsedTime;
string HostPrintQueue;
datetime InstallDate;
uint32 JobId;
string JobStatus;
string Name;
string Notify;
string Owner;
uint32 PagesPrinted;
string Parameters;
string PrintProcessor;
uint32 Priority;
uint32 Size;
datetime StartTime;
string Status;
uint32 StatusMask;
datetime TimeSubmitted;
uint32 TotalPages;
datetime UntilTime;
};
如
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_PrintJob")
可以获得打印任务列表等信息
对于VB来讲获得系统硬件和软件信息大都使用API,现在使用WMI可以快速的实现我们的目标.如获取驱动器/显卡/共享信息等等都会变得方便和有效