基于WMI的信息查询和编辑,按微软的说明一般都是
Posted CodeGear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于WMI的信息查询和编辑,按微软的说明一般都是相关的知识,希望对你有一定的参考价值。
晕!这个不是很简单的东西吗? //---------WMI---------- type Rec_Wmi = record ComputerName: string; Namespace: string; User: string; Password: string; WMIType: string; Enum: IEnumVariant; class function GetWmiEnum(WMIType: string; var AEnum: IEnumVariant; Namespace: string = ‘root\cimv2‘; Where: string = ‘‘; ComputerName: string = ‘‘; User: string = ‘‘; Password: string = ‘‘): string; static; class function GetWMIProperty(Enum: IEnumVariant; WMIProperty: string; Index: integer = 0): OleVariant; static; class function SetWMIProperty(Enum: IEnumVariant; WMIProperty: string; value: string; Index: integer = 0): string; static; function GetEnum(Where: string = ‘‘): string; function GetProperty(WMIProperty: string; Index: integer = 0): OleVariant; function SetProperty(WMIProperty: string; value: string): string; end; { Rec_Wmi } function Rec_Wmi.GetEnum(Where: string): string; begin if Self.ComputerName = ‘‘ then Self.ComputerName := ‘.‘; if Self.Namespace = ‘‘ then Self.Namespace := ‘root\cimv2‘; Result := GetWmiEnum(Self.WMIType, Self.Enum, Self.Namespace, Where, Self.ComputerName, Self.User, Self.Password); end; function Rec_Wmi.GetProperty(WMIProperty: string; Index: integer): OleVariant; begin Result := TrueStr; if VarIsNull(Self.Enum) then Result := Self.GetEnum; if Result <> TrueStr then exit(‘‘); Result := Self.GetWMIProperty(Self.Enum, WMIProperty, Index); end; class function Rec_Wmi.GetWmiEnum(WMIType: string; var AEnum: IEnumVariant; Namespace, Where, ComputerName, User, Password: string): string; var Wmi, Objs : OleVariant; sql: string; begin Result := FalseStr; try if Where = ‘‘ then sql := ‘Select * from ‘ + WMIType else sql := ‘Select * from ‘ + WMIType + ‘ where ‘ + Where; if ComputerName = ‘‘ then ComputerName := ‘.‘; Wmi := CreateOleObject(‘WbemScripting.SWbemLocator‘); if (User <> ‘‘) and (Password <> ‘‘) then Objs := Wmi.ConnectServer(ComputerName, Namespace, User, Password).ExecQuery(sql) else Objs := Wmi.ConnectServer(ComputerName, Namespace).ExecQuery(sql); if VarIsNull(Objs) then exit(‘未找到 ‘ + WMIType); AEnum := IEnumVariant(IUnknown(Objs._NewEnum)); Result := TrueStr; except on E: Exception do Result := E.Message; end; end; class function Rec_Wmi.GetWMIProperty(Enum: IEnumVariant; WMIProperty: string; Index: integer): OleVariant; var obj: OleVariant; C: Cardinal; i: integer; hr: HResult; begin Result := null; try Enum.Reset; i := 0; while i <= index do begin hr := Enum.Next(1, obj, C); inc(i); end; if (hr = S_OK) then Result := obj.Properties_.Item(WMIProperty, 0).value; except on E: Exception do Result := ‘‘; end; end; function Rec_Wmi.SetProperty(WMIProperty, value: string): string; begin Result := TrueStr; if VarIsNull(Self.Enum) then Result := Self.GetEnum; Result := Self.SetWMIProperty(Self.Enum, WMIProperty, value); end; class function Rec_Wmi.SetWMIProperty(Enum: IEnumVariant; WMIProperty, value: string; Index: integer): string; var obj: OleVariant; C: Cardinal; i: integer; hr: HResult; begin Result := FalseStr; try Enum.Reset; i := 0; while i <= Index do begin hr := Enum.Next(1, obj, C); inc(i); end; if (hr = S_OK) then begin obj.Properties_.Item(WMIProperty, 0).value := value; obj.Put_; end; Result := TrueStr; except on E: Exception do Result := E.Message; end; end; 以上代码都是查阅微软文档后自己写的 测试程序 procedure TForm_Main.Button3Click(Sender: TObject); var Awmi: Rec_Wmi; devIndex: integer; arrstr: array of string; i: integer; ov: OleVariant; begin Memo_Info.Lines.Clear; if Edit_Device_ID.text = ‘‘ then devIndex := 0 else devIndex := StrToInt(Edit_Device_ID.text); Awmi.ComputerName := Edit_Database.text; Awmi.User := Edit_User_Name.text; Awmi.Password := Edit_PassWord.text; Memo_Info.Lines.Add(‘-----物理设备--------‘); Awmi.WMIType := ‘Win32_PhysicalMedia‘; Memo_Info.Lines.Add(‘GetEnum:‘ + Awmi.GetEnum); Memo_Info.Lines.Add(‘PhysicalMedia Caption :‘ + vartostr(Awmi.GetProperty(‘Caption‘, devIndex))); Memo_Info.Lines.Add(‘PhysicalMedia SerialNumber :‘ + vartostr(Awmi.GetProperty(‘SerialNumber‘, devIndex))); Memo_Info.Lines.Add(‘PhysicalMedia Description :‘ + vartostr(Awmi.GetProperty(‘Description‘, devIndex))); Memo_Info.Lines.Add(‘PhysicalMedia Name :‘ + vartostr(Awmi.GetProperty(‘Name‘, devIndex))); Memo_Info.Lines.Add(‘------物理盘-------‘); Awmi.WMIType := ‘Win32_DiskDrive‘; Memo_Info.Lines.Add(‘GetEnum:‘ + Awmi.GetEnum); Memo_Info.Lines.Add(‘Win32_DiskDrive PNPDeviceID :‘ + vartostr(Awmi.GetProperty(‘PNPDeviceID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskDrive SerialNumber :‘ + vartostr(Awmi.GetProperty(‘SerialNumber‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskDrive Description :‘ + vartostr(Awmi.GetProperty(‘Description‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskDrive DeviceID :‘ + vartostr(Awmi.GetProperty(‘DeviceID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskDrive Name :‘ + vartostr(Awmi.GetProperty(‘Name‘, devIndex))); // Memo_Info.Lines.Add(‘Win32_DiskDrive CapabilityDescriptions :‘ + Awmi.GetProperty(‘CapabilityDescriptions‘)); Memo_Info.Lines.Add(‘Win32_DiskDrive MediaType :‘ + vartostr(Awmi.GetProperty(‘MediaType‘, devIndex))); Memo_Info.Lines.Add(‘------磁盘分区-------‘); Awmi.WMIType := ‘Win32_DiskPartition‘; Memo_Info.Lines.Add(‘GetEnum:‘ + Awmi.GetEnum); //(‘ DeviceID =‘‘Z:‘‘‘)); Memo_Info.Lines.Add(‘Win32_DiskPartition Caption :‘ + vartostr(Awmi.GetProperty(‘Caption‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskPartition Name :‘ + vartostr(Awmi.GetProperty(‘Name‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskPartition Description :‘ + vartostr(Awmi.GetProperty(‘Description‘))); Memo_Info.Lines.Add(‘Win32_DiskPartition DeviceID :‘ + vartostr(Awmi.GetProperty(‘DeviceID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskPartition DiskIndex :‘ + vartostr(Awmi.GetProperty(‘DiskIndex‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskPartition Index :‘ + vartostr(Awmi.GetProperty(‘Index‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskPartition PNPDeviceID :‘ + vartostr(Awmi.GetProperty(‘PNPDeviceID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskPartition Purpose :‘ + vartostr(Awmi.GetProperty(‘Purpose‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskPartition Size :‘ + vartostr(Awmi.GetProperty(‘Size‘, devIndex))); Memo_Info.Lines.Add(‘Win32_DiskPartition SystemName :‘ + vartostr(Awmi.GetProperty(‘SystemName‘, devIndex))); Memo_Info.Lines.Add(‘------逻辑盘-------‘); Awmi.WMIType := ‘Win32_LogicalDisk‘; Memo_Info.Lines.Add(‘GetEnum:‘ + Awmi.GetEnum); //(‘ DeviceID =‘‘Z:‘‘‘)); Memo_Info.Lines.Add(‘Win32_LogicalDisk PNPDeviceID :‘ + vartostr(Awmi.GetProperty(‘PNPDeviceID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_LogicalDisk Size :‘ + vartostr(Awmi.GetProperty(‘Size‘))); Memo_Info.Lines.Add(‘Win32_LogicalDisk DeviceID :‘ + vartostr(Awmi.GetProperty(‘DeviceID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_LogicalDisk VolumeName :‘ + vartostr(Awmi.GetProperty(‘VolumeName‘, devIndex))); Memo_Info.Lines.Add(‘Win32_LogicalDisk VolumeSerialNumber :‘ + vartostr(Awmi.GetProperty(‘VolumeSerialNumber‘, devIndex))); Memo_Info.Lines.Add(‘-----主板--------‘); Awmi.WMIType := ‘Win32_BaseBoard‘; Memo_Info.Lines.Add(‘GetEnum:‘ + Awmi.GetEnum); Memo_Info.Lines.Add(‘Win32_BaseBoard SerialNumber :‘ + vartostr(Awmi.GetProperty(‘SerialNumber‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard InstallDate :‘ + vartostr(Awmi.GetProperty(‘InstallDate‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard Product :‘ + vartostr(Awmi.GetProperty(‘Product‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard Manufacturer :‘ + vartostr(Awmi.GetProperty(‘Manufacturer‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard Caption :‘ + vartostr(Awmi.GetProperty(‘Caption‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard CreationClassName :‘ + vartostr(Awmi.GetProperty(‘CreationClassName‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard Model :‘ + vartostr(Awmi.GetProperty(‘Model‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard Name :‘ + vartostr(Awmi.GetProperty(‘Name‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard PartNumber :‘ + vartostr(Awmi.GetProperty(‘PartNumber‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard SlotLayout :‘ + vartostr(Awmi.GetProperty(‘SlotLayout‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard Version :‘ + vartostr(Awmi.GetProperty(‘Version‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard SKU :‘ + vartostr(Awmi.GetProperty(‘SKU‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard OtherIdentifyingInfo :‘ + vartostr(Awmi.GetProperty(‘OtherIdentifyingInfo‘))); Memo_Info.Lines.Add(‘Win32_BaseBoard CreationClassName :‘ + vartostr(Awmi.GetProperty(‘CreationClassName‘))); Memo_Info.Lines.Add(‘-----Bios--------‘); Awmi.WMIType := ‘Win32_BIOS‘; Memo_Info.Lines.Add(‘GetEnum:‘ + Awmi.GetEnum); Memo_Info.Lines.Add(‘Win32_BIOS SerialNumber :‘ + vartostr(Awmi.GetProperty(‘SerialNumber‘))); Memo_Info.Lines.Add(‘Win32_BIOS TargetOperatingSystem :‘ + vartostr(vartostr(Awmi.GetProperty(‘TargetOperatingSystem‘)))); Memo_Info.Lines.Add(‘Win32_BIOS Manufacturer :‘ + vartostr(Awmi.GetProperty(‘Manufacturer‘))); Memo_Info.Lines.Add(‘Win32_BIOS BuildNumber :‘ + vartostr(Awmi.GetProperty(‘BuildNumber‘))); Memo_Info.Lines.Add(‘Win32_BIOS InstallDate :‘ + vartostr(Awmi.GetProperty(‘InstallDate‘))); Memo_Info.Lines.Add(‘Win32_BIOS ReleaseDate :‘ + vartostr(Awmi.GetProperty(‘ReleaseDate‘))); Memo_Info.Lines.Add(‘Win32_BIOS Version :‘ + vartostr(Awmi.GetProperty(‘Version‘))); Memo_Info.Lines.Add(‘Win32_BIOS CodeSet :‘ + vartostr(Awmi.GetProperty(‘CodeSet‘))); Memo_Info.Lines.Add(‘Win32_BIOS BIOSVersion :‘); ov := Awmi.GetProperty(‘CodeSet‘); if not VarIsNull(ov) then begin if VarIsArray(ov) then begin for i := VarArrayLowBound(ov, 1) to VarArrayHighBound(ov, 1) do begin Memo_Info.Lines.Add(vartostr(VarArrayGet(ov, [i]))); end; end end; Memo_Info.Lines.Add(‘-----网卡--------‘); Awmi.WMIType := ‘Win32_NetworkAdapter‘; Memo_Info.Lines.Add(‘GetEnum:‘ + Awmi.GetEnum(‘AdapterTypeID=0‘)); Memo_Info.Lines.Add(‘Win32_NetworkAdapter AdapterType :‘ + vartostr(Awmi.GetProperty(‘AdapterType‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter name :‘ + vartostr(Awmi.GetProperty(‘name‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter MACAddress :‘ + vartostr(Awmi.GetProperty(‘MACAddress‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter Caption :‘ + vartostr(Awmi.GetProperty(‘Caption‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter DeviceID :‘ + vartostr(Awmi.GetProperty(‘DeviceID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter Description :‘ + vartostr(Awmi.GetProperty(‘Description‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter GUID :‘ + vartostr(Awmi.GetProperty(‘GUID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter Index :‘ + vartostr(Awmi.GetProperty(‘Index‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter InterfaceIndex :‘ + vartostr(Awmi.GetProperty(‘InterfaceIndex‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter Manufacturer :‘ + vartostr(Awmi.GetProperty(‘Manufacturer‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter MaxSpeed :‘ + vartostr(vartostr(Awmi.GetProperty(‘MaxSpeed‘, devIndex)))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter Speed :‘ + vartostr(Awmi.GetProperty(‘Speed‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter NetConnectionStatus :‘ + vartostr(Awmi.GetProperty(‘NetConnectionStatus‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter PNPDeviceID :‘ + vartostr(Awmi.GetProperty(‘PNPDeviceID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter ProductName :‘ + vartostr(Awmi.GetProperty(‘ProductName‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter ServiceName :‘ + vartostr(Awmi.GetProperty(‘ServiceName‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter SystemName :‘ + vartostr(Awmi.GetProperty(‘SystemName‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter PermanentAddress :‘ + vartostr(Awmi.GetProperty(‘PermanentAddress‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapter NetworkAddresses :‘); ov := Awmi.GetProperty(‘NetworkAddresses‘, devIndex); if not VarIsNull(ov) then begin if VarIsArray(ov) then begin for i := VarArrayLowBound(ov, 1) to VarArrayHighBound(ov, 1) do begin Memo_Info.Lines.Add(vartostr(VarArrayGet(ov, [i]))); end; end end; Memo_Info.Lines.Add(‘-----网卡设置--------‘); Awmi.WMIType := ‘Win32_NetworkAdapterConfiguration‘; Memo_Info.Lines.Add(‘GetEnum:‘ + Awmi.GetEnum(‘IPEnabled=True‘)); Memo_Info.Lines.Add(‘Win32_NetworkAdapterConfiguration Properties :‘ + vartostr(Awmi.GetProperty(‘Properties‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapterConfiguration Caption :‘ + vartostr(Awmi.GetProperty(‘Caption‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapterConfiguration Description :‘ + vartostr(Awmi.GetProperty(‘Description‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapterConfiguration DNSDomain :‘ + vartostr(Awmi.GetProperty(‘DNSDomain‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapterConfiguration DNSHostName :‘ + vartostr(Awmi.GetProperty(‘DNSHostName‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapterConfiguration Index :‘ + vartostr(Awmi.GetProperty(‘Index‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapterConfiguration InterfaceIndex :‘ + vartostr(Awmi.GetProperty(‘InterfaceIndex‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapterConfiguration MACAddress :‘ + vartostr(Awmi.GetProperty(‘MACAddress‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapterConfiguration ServiceName :‘ + vartostr(Awmi.GetProperty(‘ServiceName‘, devIndex))); Memo_Info.Lines.Add(‘Win32_NetworkAdapterConfiguration DefaultIPGateway :‘); ov := Awmi.GetProperty(‘DefaultIPGateway‘, devIndex); if not VarIsNull(ov) then begin if VarIsArray(ov) then begin for i := VarArrayLowBound(ov, 1) to VarArrayHighBound(ov, 1) do begin Memo_Info.Lines.Add(vartostr(VarArrayGet(ov, [i]))); end; end end; Memo_Info.Lines.Add(‘Win32_NetworkAdapterConfiguration IPAddress :‘); ov := (Awmi.GetProperty(‘IPAddress‘, devIndex)); if not VarIsNull(ov) then begin if VarIsArray(ov) then begin for i := VarArrayLowBound(ov, 1) to VarArrayHighBound(ov, 1) do begin Memo_Info.Lines.Add(vartostr(VarArrayGet(ov, [i]))); end; end end; Memo_Info.Lines.Add(‘-----CPU--------‘); Awmi.WMIType := ‘Win32_Processor‘; Memo_Info.Lines.Add(‘GetEnum:‘ + Awmi.GetEnum); //(‘IPEnabled=True‘)); Memo_Info.Lines.Add(‘Win32_Processor ProcessorId :‘ + vartostr(Awmi.GetProperty(‘ProcessorId‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor SerialNumber :‘ + vartostr(Awmi.GetProperty(‘SerialNumber‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor Version :‘ + vartostr(Awmi.GetProperty(‘Version‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor UniqueId :‘ + vartostr(Awmi.GetProperty(‘UniqueId‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor SystemName :‘ + vartostr(Awmi.GetProperty(‘SystemName‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor Name :‘ + vartostr(Awmi.GetProperty(‘Name‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor Description :‘ + vartostr(Awmi.GetProperty(‘Description‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor Caption :‘ + vartostr(Awmi.GetProperty(‘Caption‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor DeviceID :‘ + vartostr(Awmi.GetProperty(‘DeviceID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor CreationClassName :‘ + vartostr(Awmi.GetProperty(‘CreationClassName‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor Manufacturer :‘ + vartostr(Awmi.GetProperty(‘Manufacturer‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor NumberOfCores :‘ + vartostr(Awmi.GetProperty(‘NumberOfCores‘, devIndex))); Memo_Info.Lines.Add(‘Win32_Processor ThreadCount :‘ + vartostr(Awmi.GetProperty(‘ThreadCount‘, devIndex))); Memo_Info.Lines.Add(‘-----显卡-------‘); Awmi.WMIType := ‘Win32_VideoController‘; Memo_Info.Lines.Add(‘GetEnum:‘ + Awmi.GetEnum); //(‘IPEnabled=True‘)); Memo_Info.Lines.Add(‘Win32_VideoController name :‘ + vartostr(Awmi.GetProperty(‘name‘, devIndex))); Memo_Info.Lines.Add(‘Win32_VideoController Description :‘ + vartostr(Awmi.GetProperty(‘Description‘, devIndex))); Memo_Info.Lines.Add(‘Win32_VideoController Caption :‘ + vartostr(Awmi.GetProperty(‘Caption‘, devIndex))); Memo_Info.Lines.Add(‘Win32_VideoController DeviceID :‘ + vartostr(Awmi.GetProperty(‘DeviceID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_VideoController CreationClassName :‘ + vartostr(Awmi.GetProperty(‘CreationClassName‘, devIndex))); Memo_Info.Lines.Add(‘Win32_VideoController PNPDeviceID :‘ + vartostr(Awmi.GetProperty(‘PNPDeviceID‘, devIndex))); Memo_Info.Lines.Add(‘Win32_VideoController SystemName :‘ + vartostr(Awmi.GetProperty(‘SystemName‘, devIndex))); Memo_Info.Lines.Add(‘Win32_VideoController VideoModeDescription :‘ + vartostr(Awmi.GetProperty(‘VideoModeDescription‘, devIndex))); Memo_Info.Lines.Add(‘Win32_VideoController VideoProcessor :‘ + vartostr(Awmi.GetProperty(‘VideoProcessor‘, devIndex))); Memo_Info.Lines.Add(‘Win32_VideoController SystemCreationClassName :‘ + vartostr(Awmi.GetProperty(‘SystemCreationClassName‘, devIndex))); Memo_Info.Lines.Add(‘Win32_VideoController AdapterCompatibility :‘ + vartostr(Awmi.GetProperty(‘AdapterCompatibility‘, devIndex))); Memo_Info.Lines.Add(‘Win32_VideoController AdapterDACType :‘ + vartostr(Awmi.GetProperty(‘AdapterDACType‘, devIndex))); end;
基于WMI的信息查询和编辑,按微软的说明一般都是 Requirements Minimum supported client Windows Vista Minimum supported server Windows Server 2008 Namespace Root\CIMV2 MOF CIMWin32.mof DLL CIMWin32.dll 操作系统能读到的信息,都能读到.内容丰富的撑到爆.在windows域环境下,wmi是可以查看域内任意计算机信息的,不限于本机,当然需要你有相应域权限. 具体可msdn.microsoft.com搜索 比如磁盘的: https://msdn.microsoft.com/en-us/library/aa394132%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396 操作系统的: https://msdn.microsoft.com/en-us/library/dn792258(v=vs.85).aspx 基本上windows整个体系方方面面统统可以用此方法读取和操作.这也是微软未来的方向,以前的单个api系统会慢慢被wmi统一掉. 当然XP对很多wmi不支持,Windows Vista 则几乎都没问题
以上是关于基于WMI的信息查询和编辑,按微软的说明一般都是的主要内容,如果未能解决你的问题,请参考以下文章
VC能否获取所有硬件信息,现只获得CPU的信息,其他的都不行