zoukankan      html  css  js  c++  java
  • 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('.','rootcimv2').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
     
    不过常用的也就那么几个,这些类型中的属性,我会在后面的文章中慢慢的总结。
  • 相关阅读:
    iOS 网络优化--页面返回的时候取消网络请求
    iOS 内存管理
    realm数据库使用
    KNN 算法分类电影类型
    sklearn库学习之01
    Python 生成4位验证码图片
    Python——读写Excel文件
    KNN--用于手写数字识别
    Python基础学习-'module' object has no attribute 'urlopen'解决方法
    swift_通知的使用
  • 原文地址:https://www.cnblogs.com/jinshizuofei/p/3418642.html
Copyright © 2011-2022 走看看