VB中使用WMI获取系统硬件和软件有关信息
WMI是英文WindowsManagementInstrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然你必须要拥有足够的权限),比如:重启,关机,关闭进程,创建进程等。
当然此文是适用于vbscript
微软官方的资料:
实例如下:
用WMI,先工程-引用MicrosoftWMIScriptingV1.1Library
获取显卡/声卡/内存/操作系统的信息
声卡信息
PrivateSubwmiSoundDeviceInfo() DimwmiObjSetAsSWbemObjectSet DimobjAsSWbemObject SetwmiObjSet=GetObject(winmgmts:{impersonationLevel=impersonate})._ InstancesOf(Win32_SoundDevice) OnLocalErrorResumeNext ForEachobjInwmiObjSet MsgBoxobj.ProductName Next EndSub
显卡信息
PrivateSubwmiVideoControllerInfo() DimwmiObjSetAsSWbemObjectSet DimobjAsSWbemObject SetwmiObjSet=GetObject(winmgmts:{impersonationLevel=impersonate})._ InstancesOf(Win32_VideoController) OnLocalErrorResumeNext ForEachobjInwmiObjSet MsgBoxobj.VideoProcessor Next EndSub
内存信息
PrivateSubwmiPhysicalMemoryInfo() DimwmiObjSetAsSWbemObjectSet DimobjAsSWbemObject SetwmiObjSet=GetObject(winmgmts:{impersonationLevel=impersonate})._ InstancesOf(Win32_PhysicalMemory) OnLocalErrorResumeNext ForEachobjItemInwmiObjSet Debug.PrintBankLabel:&objItem.BankLabel Debug.PrintCapacity:&objItem.Capacity Debug.PrintCaption:&objItem.Caption Debug.PrintCreationClassName:&objItem.CreationClassName Debug.PrintDataWidth:&objItem.DataWidth Debug.PrintDescription:&objItem.Description Debug.PrintDeviceLocator:&objItem.DeviceLocator Debug.PrintFormFactor:&objItem.FormFactor Debug.PrintHotSwappable:&objItem.HotSwappable Debug.PrintInstallDate:&objItem.InstallDate Debug.PrintInterleaveDataDepth:&objItem.InterleaveDataDepth Debug.PrintInterleavePosition:&objItem.InterleavePosition Debug.PrintManufacturer:&objItem.Manufacturer Debug.PrintMemoryType:&objItem.MemoryType Debug.PrintModel:&objItem.Model Debug.PrintName:&objItem.name Debug.PrintOtherIdentifyingInfo:&objItem.OtherIdentifyingInfo Debug.PrintPartNumber:&objItem.PartNumber Debug.PrintPositionInRow:&objItem.PositionInRow Debug.PrintPoweredOn:&objItem.PoweredOn Debug.PrintRemovable:&objItem.Removable Debug.PrintReplaceable:&objItem.Replaceable Debug.PrintSerialNumber:&objItem.SerialNumber Debug.PrintSKU:&objItem.SKU Debug.PrintSpeed:&objItem.Speed Debug.PrintStatus:&objItem.Status Debug.PrintTag:&objItem.Tag Debug.PrintTotalWidth:&objItem.TotalWidth Debug.PrintTypeDetail:&objItem.TypeDetail Debug.PrintVersion:&objItem.Version Next EndSub
操作系统信息
PrivateSubCommand1_Click() DimwmiObjSetAsSWbemObjectSet DimobjAsSWbemObject DimmsgAsString DimdtbAsString DimdAsString DimtAsString DimbiasAsLong OnLocalErrorResumeNext SetwmiObjSet=GetObject(winmgmts:{impersonationLevel=impersonate}).InstancesOf(Win32_OperatingSystem) ForEachobjInwmiObjSet MsgBox你当前使用的系统是&obj.Caption Next EndSub
说明:
大家可能会发现一个规律,实际上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类表
Win32Classes
Microsoft®Windows®classesgiveyouthemeanstomanipulateavarietyofobjects.ThefollowingtableidentifiesthecategoriesofWindowsclasses.
CategoryDescription
ComputersystemhardwareClassesthatrepresenthardwarerelatedobjects.
OperatingsystemClassesthatrepresentoperatingsystemrelatedobjects.
InstalledapplicationsClassesthatrepresentsoftwarerelatedobjects.
WMIservicemanagementClassesusedtomanageWMI.
PerformancecountersClassesthatrepresentformattedandrawperformancedata.
硬件类
ComputerSystemHardwareClasses
heCoolingDevicessubcategorygroupsclassesthatrepresentinstrumentablefans,temperatureprobes,andrefrigerationdevices.
ClassDescription
Win32_FanRepresentsthepropertiesofafandeviceinthecomputersystem.
Win32_HeatPipeRepresentsthepropertiesofaheatpipecoolingdevice.
Win32_RefrigerationRepresentsthepropertiesofarefrigerationdevice.
Win32_TemperatureProbeRepresentsthepropertiesofatemperaturesensor(electronicthermometer).
InputDeviceClasses
TheInputDevicessubcategorygroupsclassesthatrepresentkeyboardsandpointingdevices.
ClassDescription
Win32_KeyboardRepresentsakeyboardinstalledonaWindowssystem.
Win32_PointingDeviceRepresentsaninputdeviceusedtopointtoandselectregionsonthedisplayofaWindowscomputersystem.
MassStorageClasses
ClassesintheMassStoragesubcategoryrepresentstoragedevicessuchasharddiskdrives,CD-ROMdrives,andtapedrives.
ClassDescription
Win32_AutochkSettingRepresentsthesettingsfortheautocheckoperationofadisk.
Win32_CDROMDriveRepresentsaCD-ROMdriveonaWindowscomputersystem.
Win32_DiskDriveRepresentsaphysicaldiskdriveasseenbyacomputerrunningtheWindowsoperatingsystem.
Win32_FloppyDriveManagesthecapabilitiesofafloppydiskdrive.
Win32_PhysicalMediaRepresentsanytypeofdocumentationorstoragemedium.
Win32_TapeDriveRepresentsatapedriveonaWindowscomputer.
Motherboard,Controller,andPortClasses
TheMotherboard,Controllers,andPortssubcategorygroupsclassesthatrepresentsystemdevices.Examplesincludesystemmemory,cachememory,andcontrollers.
ClassDescription
Win32_1394ControllerRepresentsthecapabilitiesandmanagementofa1394controller.
Win32_1394ControllerDeviceRelatesthehigh-speedserialbus(IEEE1394Firewire)ControllerandtheCIM_LogicalDeviceinstanceconnectedtoit.
Win32_AllocatedResourceRelatesalogicaldevicetoasystemresource.
Win32_AssociatedProcessorMemoryRelatesaprocessoranditscachememory.
Win32_BaseBoardRepresentsabaseboard(alsoknownasamotherboardorsystemboard).
Win32_BIOSRepresentstheattributesofthecomputersystem'sbasicinput/outputservices(BIOS)thatareinstalledonthecomputer.
Win32_BusRepresentsaphysicalbusasseenbyaWindowsoperatingsystem.
Win32_CacheMemoryRepresentscachememory(internalandexternal)onacomputersystem.
Win32_ControllerHasHubRepresentsthehubsdownstreamfromtheuniversalserialbus(USB)controller.
Win32_DeviceBusRelatesasystembusandalogicaldeviceusingthebus.
Win32_DeviceMemoryAddressRepresentsadevicememoryaddressonaWindowssystem.
Win32_DeviceSettingsRelatesalogicaldeviceandasettingthatcanbeappliedtoit.
Win32_DMAChannelRepresentsadirectmemoryaccess(DMA)channelonaWindowscomputersystem.
Win32_FloppyControllerRepresentsthecapabilitiesandmanagementcapacityofafloppydiskdrivecontroller.
Win32_IDEControllerRepresentsthecapabilitiesofanIntegratedDriveElectronics(IDE)controllerdevice.
Win32_IDEControllerDeviceAssociationclassthatrelatesanIDEcontrollerandthelogicaldevice.
Win32_InfraredDeviceRepresentsthecapabilitiesandmanagementofaninfrareddevice.
Win32_IRQResourceRepresentsaninterruptrequestline(IRQ)numberonaWindowscomputersystem.
Win32_MemoryArrayRepresentsthepropertiesofthecomputersystemmemoryarrayandmappedaddresses.
Win32_MemoryArrayLocationRelatesalogicalmemoryarrayandthephysicalmemoryarrayuponwhichitexists.
Win32_MemoryDeviceRepresentsthepropertiesofacomputersystem'smemorydevicealongwithit'sassociatedmappedaddresses.
Win32_MemoryDeviceArrayRelatesamemorydeviceandthememoryarrayinwhichitresides.
Win32_MemoryDeviceLocationAssociationclassthatrelatesamemorydeviceandthephysicalmemoryonwhichitexists.
Win32_MotherboardDeviceRepresentsadevicethatcontainsthecentralcomponentsoftheWindowscomputersystem.
Win32_OnBoardDeviceRepresentscommonadapterdevicesbuiltintothemotherboard(systemboard).
Win32_ParallelPortRepresentsthepropertiesofaparallelportonaWindowscomputersystem.
Win32_PCMCIAControllerManagesthecapabilitiesofaPersonalComputerMemoryCardInterfaceAdapter(PCMCIA)controllerdevice.
Win32_PhysicalMemoryRepresentsaphysicalmemorydevicelocatedonacomputerasavailabletotheoperatingsystem.
Win32_PhysicalMemoryArrayRepresentsdetailsaboutthecomputersystem'sphysicalmemory.
Win32_PhysicalMemoryLocationRelatesanarrayofphysicalmemoryanditsphysicalmemory.
Win32_PNPAllocatedResourceRepresentsanassociationbetweenlogicaldevicesandsystemresources.
Win32_PNPDeviceRelatesadevice(knowntoConfigurationManagerasaPNPEntity),andthefunctionitperforms.
Win32_PNPEntityRepresentsthepropertiesofaPlugandPlaydevice.
Win32_PortConnectorRepresentsphysicalconnectionports,suchasDB-25pinmale,Centronics,andPS/2.
Win32_PortResourceRepresentsanI/OportonaWindowscomputersystem.
Win32_ProcessorRepresentsadevicecapableofinterpretingasequenceofmachineinstructionsonaWindowscomputersystem.
Win32_SCSIControllerRepresentsasmallcomputersysteminterface(SCSI)controlleronaWindowssystem.
Win32_SCSIControllerDeviceRelatesaSCSIcontrollerandthelogicaldevice(diskdrive)connectedtoit.
Win32_SerialPortRepresentsaserialportonaWindowssystem.
Win32_SerialPortConfigurationRepresentsthesettingsfordatatransmissiononaWindowsserialport.
Win32_SerialPortSettingRelatesaserialportanditsconfigurationsettings.
Win32_SMBIOSMemoryRepresentsthecapabilitiesandmanagementofmemory-relatedlogicaldevices.
Win32_SoundDeviceRepresentsthepropertiesofasounddeviceonaWindowscomputersystem.
Win32_SystemBIOSRelatesacomputersystem(includingdatasuchasstartupproperties,timezones,bootconfigurations,oradministrativepasswords)andasystemBIOS(services,languages,systemmanagementproperties).
Win32_SystemDriverPNPEntityRelatesaPlugandPlaydeviceontheWindowscomputersystemandthedriverthatsupportsthePlugandPlaydevice.
Win32_SystemEnclosureRepresentsthepropertiesassociatedwithaphysicalsystemenclosure.
Win32_SystemMemoryResourceRepresentsasystemmemoryresourceonaWindowssystem.
Win32_SystemSlotRepresentsphysicalconnectionpointsincludingports,motherboardslotsandperipherals,andproprietaryconnectionspoints.
Win32_USBControllerManagesthecapabilitiesofauniversalserialbus(USB)controller.
Win32_USBControllerDeviceRelatesaUSBcontrollerandtheCIM_LogicalDeviceinstancesconnectedtoit.
Win32_USBHubRepresentsthemanagementcharacteristicsofaUSBhub.
NetworkingDeviceClasses
TheNetworkingDevicessubcategorygroupsclassesthatrepresentthenetworkinterfacecontroller,itsconfigurations,anditssettings.
ClassDescription
Win32_NetworkAdapterRepresentsanetworkadapteronaWindowssystem.
Win32_NetworkAdapterConfigurationRepresentstheattributesandbehaviorsofanetworkadapter.TheclassisnotguaranteedtobesupportedaftertheratificationoftheDistributedManagementTaskForce(DMTF)CIMnetworkspecification.
Win32_NetworkAdapterSettingRelatesanetworkadapteranditsconfigurationsettings.
PowerClasses
ThePowersubcategorygroupsclassesthatrepresentpowersupplies,batteries,andeventsrelatedtothesedevices.
ClassDescription
Win32_AssociatedBatteryRelatesalogicaldeviceandthebatteryitisusing.
Win32_BatteryRepresentsabatteryconnectedtothecomputersystem.
Win32_CurrentProbeRepresentsthepropertiesofacurrentmonitoringsensor(ammeter).
Win32_PortableBatteryRepresentsthepropertiesofaportablebattery,suchasoneusedforanotebookcomputer.
Win32_PowerManagementEventRepresentspowermanagementeventsresultingfrompowerstatechanges.
Win32_UninterruptiblePowerSupplyRepresentsthecapabilitiesandmanagementcapacityofanuninterruptiblepowersupply(UPS).
Win32_VoltageProbeRepresentsthepropertiesofavoltagesensor(electronicvoltmeter).
PrintingClasses
ThePrintingsubcategorygroupsclassesthatrepresentprinters,printerconfigurations,andprintjobs.
ClassDescription
Win32_DriverForDeviceRelatesaprintertoaprinterdriver.
Win32_PrinterRepresentsadeviceconnectedtoaWindowscomputersystemthatiscapableofreproducingavisualimageonamedium.
Win32_PrinterConfigurationDefinestheconfigurationforaprinterdevice.
Win32_PrinterControllerRelatesaprinterandthelocaldevicetowhichtheprinterisconnected.
Win32_PrinterDriverRepresentsthedriversforaWin32_Printerinstance.
Win32_PrinterDriverDllRelatesalocalprinteranditsdriverfile(notthedriveritself).
Win32_PrinterSettingRelatesaprinteranditsconfigurationsettings.
Win32_PrintJobRepresentsaprintjobgeneratedbyaWindowsapplication.
Win32_TCPIPPrinterPortRepresentsaTCP/IPserviceaccesspoint.
TelephonyClasses
TheTelephonysubcategorygroupsclassesthatrepresentplainoldtelephonemodemdevicesandtheirassociatedserialconnections.
ClassDescription
Win32_POTSModemRepresentstheservicesandcharacteristicsofaPlainOldTelephoneService(POTS)modemonaWindowssystem.
Win32_POTSModemToSerialPortRelatesamodemandtheserialportthemodemuses.
VideoandMonitorClasses
TheVideoandMonitorssubcategorygroupsclassesthatrepresentmonitors,videocards,andtheirassociatedsettings.
ClassDescription
Win32_DesktopMonitorRepresentsthetypeofmonitorordisplaydeviceattachedtothecomputersystem.
Win32_DisplayConfigurationRepresentsconfigurationinformationforthedisplaydeviceonaWindowssystem.Thisclassisobsolete.Inplaceofthisclass,usethepropertiesintheWin32_VideoController,Win32_DesktopMonitor,andCIM_VideoControllerResolutionclasses.
Win32_DisplayControllerConfigurationRepresentsthevideoadapterconfigurationinformationofaWindowssystem.Thisclassisobsolete.Inplaceofthisclass,usethepropertiesintheWin32_VideoController,Win32_DesktopMonitor,andCIM_VideoControllerResolutionclasses.
Win32_VideoConfigurationThisclasshasbeeneliminatedfromWindowsXPandlater;attemptstouseitwillgenerateafatalerror.Inplaceofthisclass,usethepropertiescontainedintheWin32_VideoController,Win32_DesktopMonitor,andCIM_VideoControllerResolutionclasses.
Win32_VideoControllerRepresentsthecapabilitiesandmanagementcapacityofthevideocontrolleronaWindowscomputersystem.
Win32_VideoSettingsRelatesavideocontrollerandvideosettingsthatcanbeappliedtoit.
而每一个类都有对应的数据结构如
显卡
classWin32_VideoController:CIM_PCVideoController
{
uint16AcceleratorCapabilities[];
stringAdapterCompatibility;
stringAdapterDACType;
uint32AdapterRAM;
uint16Availability;
stringCapabilityDescriptions[];
stringCaption;
uint32ColorTableEntries;
uint32ConfigManagerErrorCode;
booleanConfigManagerUserConfig;
stringCreationClassName;
uint32CurrentBitsPerPixel;
uint32CurrentHorizontalResolution;
uint64CurrentNumberOfColors;
uint32CurrentNumberOfColumns;
uint32CurrentNumberOfRows;
uint32CurrentRefreshRate;
uint16CurrentScanMode;
uint32CurrentVerticalResolution;
stringDescription;
stringDeviceID;
uint32DeviceSpecificPens;
uint32DitherType;
datetimeDriverDate;
stringDriverVersion;
booleanErrorCleared;
stringErrorDescription;
uint32ICMIntent;
uint32ICMMethod;
stringInfFilename;
stringInfSection;
datetimeInstallDate;
stringInstalledDisplayDrivers;
uint32LastErrorCode;
uint32MaxMemorySupported;
uint32MaxNumberControlled;
uint32MaxRefreshRate;
uint32MinRefreshRate;
booleanMonochrome;
stringName;
uint16NumberOfColorPlanes;
uint32NumberOfVideoPages;
stringPNPDeviceID;
uint16PowerManagementCapabilities[];
booleanPowerManagementSupported;
uint16ProtocolSupported;
uint32ReservedSystemPaletteEntries;
uint32SpecificationVersion;
stringStatus;
uint16StatusInfo;
stringSystemCreationClassName;
stringSystemName;
uint32SystemPaletteEntries;
datetimeTimeOfLastReset;
uint16VideoArchitecture;
uint16VideoMemoryType;
uint16VideoMode;
stringVideoModeDescription;
stringVideoProcessor;
};
声卡等
classWin32_SoundDevice:CIM_LogicalDevice
{
uint16Availability;
stringCaption;
uint32ConfigManagerErrorCode;
booleanConfigManagerUserConfig;
stringCreationClassName;
stringDescription;
stringDeviceID;
uint16DMABufferSize;
booleanErrorCleared;
stringErrorDescription;
datetimeInstallDate;
uint32LastErrorCode;
stringManufacturer;
uint32MPU401Address;
stringName;
stringPNPDeviceID;
uint16PowerManagementCapabilities[];
booleanPowerManagementSupported;
stringProductName;
stringStatus;
uint16StatusInfo;
stringSystemCreationClassName;
stringSystemName;
};
classWin32_PrintJob:CIM_Job
{
stringCaption;
stringDataType;
stringDescription;
stringDocument;
stringDriverName;
datetimeElapsedTime;
stringHostPrintQueue;
datetimeInstallDate;
uint32JobId;
stringJobStatus;
stringName;
stringNotify;
stringOwner;
uint32PagesPrinted;
stringParameters;
stringPrintProcessor;
uint32Priority;
uint32Size;
datetimeStartTime;
stringStatus;
uint32StatusMask;
datetimeTimeSubmitted;
uint32TotalPages;
datetimeUntilTime;
};
如
SetwmiObjSet=GetObject(winmgmts:{impersonationLevel=impersonate})._
InstancesOf(Win32_PrintJob)
可以获得打印任务列表等信息
对于VB来讲获得系统硬件和软件信息大都使用API,现在使用WMI可以快速的实现我们的目标.如获取驱动器/显卡/共享信息等等都会变得方便和有效