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;
beginWmi:= 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) dobeginObj := Obj.Properties_.Item(WMIProperty, 0).Value;if not VarIsNull(obj) thenbeginResult :=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
不过常用的也就那么几个,这些类型中的属性,我会在后面的文章中慢慢的总结。

转载于:https://www.cnblogs.com/jinshizuofei/p/3418642.html

delphi中WMI的使用(一)相关推荐

  1. python wmi_python中wmi介绍和使用

    python中wmi介绍和使用 (2011-03-03 11:05:00) 标签: python中wmi 介绍和使用 it python中wmi介绍和使用 一:WMI基础知识 ============ ...

  2. DELPHI 中 Window 消息大全使用详解

    Window 消息大全使用详解 导读: Delphi是Borland公司的一种面向对象的可视化软件开发工具. Delphi集中了Visual C++和Visual Basic两者的优点:容易上手.功能 ...

  3. Delphi中的容器类(二)

    TStrings类 出于效率的考虑,Delphi并没有象C++和Java那样将字符串定义为类,因此TList本身不能直接存储字符串,而字符串列表又是使用非常广泛的,为此Borland提供了TStrin ...

  4. Delphi中的线程类

    Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchr ...

  5. 探究:如何判断Delphi中的对象指针是否可用

    2019独角兽企业重金招聘Python工程师标准>>> 近日,在网上看到有网友问曰:如何确定一个对象指针是否可用?也就是说,如何确定一个对象指针是否指向一个真正可用的对象实例?其实这 ...

  6. 奇淫怪巧之在Delphi中调用不申明函数

    前一阵子,研究了一段时间的Win32Asm,研究到后来发现Win32的ASM实际上还是和C版的介绍的一样.甚至还封装了一个简版的类似VCL库结构框架的32ASM结构库,不过搞着搞着就没兴趣了,也没继续 ...

  7. Delphi中的指针类型

    首先讲讲指针类型在delphi中是怎么定义的: 指针类型的定义语法 type <指针类型标识符>=^<基类型>: 指针指向动态变量的类型是由^符后的基类型来标识,^符号也就是指 ...

  8. 自己对Delphi中使用正则表达式的研究心得

    在 Delphi 中使用正则表达式, 目前 PerlRegEx 应该是首选, 在此分享一下自己的一些心得体会. 官方网站: http://www.regular-expressions.info/de ...

  9. 关于delphi中的register, pascal, cdecl, stdcall, safecall

    最近用delphi写了个软件.所以特此也转篇文章,以留作记录吧. 1...http://blog.csdn.net/yfy_47/article/details/6572374 注: 使用错误,或者在 ...

最新文章

  1. Web 上一页下一页 用超链接 用按钮
  2. VMprotect静态跟踪 字节码反编译
  3. 汉字转拼音php代码函数,php中将汉字转换成拼音的函数代码
  4. Java8 PriorityQueue 源码阅读
  5. 微软第二财季营收达 517 亿美元,净利润同比增长 21%
  6. AI算法连载15:统计之数据降维
  7. 并发编程的 15 条建议(译)
  8. deque用法深度解析,一篇文章弄懂deque容器各种操作
  9. 双网卡mode6模式 同时工作 冗余互备
  10. 安卓中圆角背景图被拉伸的解决方案——.9.png
  11. 存储过程和函数具体的区别
  12. pageoffice 选中部分文字 添加书签和空白处添加书签 删除空白以及内容书签
  13. torch.max()及其参数探究/torch.max()返回的索引是什么意思
  14. [转]让你的网页文本框增加光晕效果与提示,水印(类似QQ2011)
  15. excel插件方格格子
  16. SAP库存管理报表(含无价厂)
  17. 转:eclipse failed to create the java virtual machine 问题图文解析
  18. rtsp-simple-server + srs搭建流媒体服务器
  19. 网约车风云再起:“小窗口”和“大窗口”齐开
  20. 拓展实践:系统函数的调用

热门文章

  1. 正态分布的前世今生:最小二乘法
  2. python卸载_Python包管理工具pip - amanlikethis
  3. 系统学习深度学习(三十一)--Nature DQN(NIPS 2015)
  4. DSP芯片概述--7.24
  5. linux输出变量的类型名称,Python 变量类型
  6. 2d游戏引擎_Cocos Creator:用 2D 物理碰撞撸 3D 横版酷跑
  7. 7种寻址方式,以及有效地址计算方法。
  8. mysql innodb内幕_Mysql(技术内幕:InnoDB存储引擎)
  9. Hive分区入门到精通
  10. Win32汇编——钩子