1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
Var
WMILocator: TSWbemLocator;
WMIService: SWbemServices;
WMIObjectSet: SWbemObjectSet;
WMIObject: SWbemObject;
WmiProperty: SWbemProperty;
WmiPropertySet: SWbemPropertySet;
PropertyEnumerator, ObjectEnumerator: IEnumVariant;
ArrayVariant: OleVariant;
OldCursor: TCursor;
NumberItem: LongWord;
// userName, domain: string;
begin
Try
try
WMILocator:= TSWbemLocator.Create(nil);
WmiService:= WMILocator.ConnectServer('.', 'root\CIMV2','','','','', wbemConnectFlagUseMaxWait, nil);
WmiObjectSet := WMIService.InstancesOf('Win32_ComputerSystem' , wbemFlagReturnWhenComplete, Nil);
ObjectEnumerator:= (WmiObjectSet._NewEnum) as IEnumVariant;
while (ObjectEnumerator.Next(1, ArrayVariant, NumberItem) = S_OK) do
begin
WmiObject := IUnknown(ArrayVariant) as SWBemObject;
WmiPropertySet:= WmiObject.Properties_;
PropertyEnumerator:= (WmiPropertySet._NewEnum) as IEnumVariant;
while (PropertyEnumerator.Next(1, ArrayVariant, NumberItem) = S_OK) do
begin
WmiProperty := IUnknown(ArrayVariant) as SWBemProperty;
If WmiProperty.name='UserName' then
Memo1.Lines.Add(WmiProperty.Get_Value);
end;
End;
except
Memo1.Lines.Add('*** Echec de l''exécution de la requête WMI!!!');
end;
Finally
WMILocator.Disconnect; WMILocator.Free;
end;
end; |
Partager