uses
ActiveX, ComObj;
...
function
GetWMIProperty(WMIType, WMIProperty:
AnsiString
):
String
;
var
Wmi, Objs, Obj:OleVariant;
Enum:IEnumVariant;
C:
Cardinal
;
begin
try
Wmi:= CreateOleObject(
AnsiString
(
'WbemScripting.SWbemLocator'
));
Objs := Wmi
.
ConnectServer(
AnsiString
(
'.'
),
AnsiString
(
'root\cimv2'
)).ExecQuery(
AnsiString
(
'Select * from Win32_'
+WMIType));
Enum:=IEnumVariant(IUnknown(Objs
.
_NewEnum));
Enum
.
Reset;
Enum
.
Next(
1
,Obj,C);
Obj:=Obj
.
Properties_
.
Item(WMIProperty,
0
).Value;
if
VarIsArray(Obj)
then
Result:=Obj[
0
]
else
Result:=Obj;
except
Result:=
'error'
;
end
;
end
;
procedure
TForm2
.
Button1Click(Sender: TObject);
begin
ShowMessage(GetWMIProperty(
'BIOS'
,
'BIOSVersion'
));
//获得BIOS版本
ShowMessage(GetWMIProperty(
'DiskDrive'
,
'SerialNumber'
));
//获得第一块硬盘的设备标示
ShowMessage(GetWMIProperty(
'Processor'
,
'ProcessorId'
));
//获得CPUID。
end
;