delphi中WMI的使用(一)


WMI(Windows Management Instrumentation,Windows 管理規范)是一項核心的 Windows 管理技術;用戶可以使用 WMI 管理本地和遠程計算機。

通過使用WMI,我們可以很方便的獲取到電腦的系統信息,但是很遺憾的是,我在網上找到的基本上都是對於某個功能的實現,比如查詢IP,獲取計算機名稱,檢測操作系統信息等等,如果只是在工作中用到了來查一下是沒有問題的,但是,要想全面的了解WMI中的類庫,來系統的掌握就很困難,WMI中有哪些系統的類,里面有哪些屬性,這些屬性都代表什么意思?MSND上面對於vbscript腳本實現的教程很詳細,但是具體在delphi中對應的類型和參數名稱是不一樣的。

先做一個通用一點的調用函數,具體的信息可以傳遞參數進來獲取到:

function GetWMIProperty(WMIType, WMIProperty: string): string;
var Wmi, Objs, Obj: OleVariant;
  C: Cardinal;
  i,Len:integer;
  tempItem:IEnumVariant;
begin
  Wmi:= CreateOleObject('WbemScripting.SWbemLocator');
  Objs := Wmi.ConnectServer('.','root\cimv2').ExecQuery('Select * from Win32_' + WMIType);
  tempItem:=IEnumVariant(IUnknown(Objs._NewEnum));
  Result:='';
  while (tempItem.Next(1, obj, c) = S_OK) do
  begin
    Obj := Obj.Properties_.Item(WMIProperty, 0).Value;
    if not VarIsNull(obj) then
    begin
      Result :=Result +trim(Obj);
      break;
    end;
  end;
end;

因為WMI中通用的類大多是Win32_開頭的,這里只需要傳遞后面的部分。

那么下一步,怎么知道我需要的是什么參數呢?以獲取計算機名為例:

str := GetWMIProperty('OperatingSystem','CSName');即可獲得。

當然,計算機名信息是比較常用的,在好幾個類里面都有。

Win32_開頭的類有:

Win32_Account
Win32_ActiveRoute
Win32_AutochkSetting
Win32_BaseBoard
Win32_BaseService
Win32_BIOS
Win32_BootConfiguration
Win32_Bus
Win32_ComputerSystem
Win32_ComputerSystemWindowsProductActivation
Win32_Desktop
Win32_DesktopMonitor
Win32_DeviceSettings
Win32_DiskDrive
Win32_DiskDrivePhysicalMedia
Win32_DisplayConfiguration
Win32_Environment
Win32_FontIntoAction
Win32_Group
Win32_IDEController
Win32_IP4PersistedRouteTable
Win32_IP4RouteTable
Win32_Keyboard
Win32_LogicalDisk
Win32_LogicalProgramGroup
Win32_LogonSession
Win32_MappedLogicalDisk
Win32_MemoryDevice
Win32_MotherboardDevice
Win32_NetworkAdapter
Win32_NetworkAdapterConfiguration
Win32_NetworkAdapterSetting
Win32_NetworkClient
Win32_NetworkConnection
Win32_OperatingSystem
Win32_PerfFormattedData_RemoteAccess_RASPort
Win32_PerfFormattedData_RemoteAccess_RASTotal
Win32_PerfRawData_RemoteAccess_RASPort
Win32_PhysicalMedia
Win32_PhysicalMemory
Win32_PNPDevice
Win32_PortConnector
Win32_POTSModem
Win32_POTSModemToSerialPort
Win32_Printer
Win32_PrinterConfiguration
Win32_Process
Win32_Processor
Win32_Product
Win32_ProgramGroup
Win32_ScheduledJob
Win32_SerialPort
Win32_SerialPortConfiguration
Win32_SerialPortSetting
Win32_Service
Win32_ServiceControl
Win32_SoundDevice
Win32_StartupCommand
Win32_SystemAccount
Win32_SystemBIOS
Win32_SystemSetting
Win32_SystemTimeZone
Win32_SystemUsers
Win32_TapeDrive
Win32_TemperatureProbe 
Win32_USBController
Win32_USBControllerDevice
Win32_UserAccount
Win32_VideoController
Win32_VideoSettings
Win32_WindowsProductActivation
 
不過常用的也就那么幾個,這些類型中的屬性,我會在后面的文章中慢慢的總結。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM