Ceci est une ancienne révision du document !
Notes sur le WMI
Enumérer les properties
ChatGPT dit :
Pour énumérer les propriétés d'une classe WMI en Free Pascal, vous pouvez utiliser les composants WMI de Free Pascal et les méthodes fournies par l'interface IWbemClassObject. Voici un exemple de code qui énumère les propriétés de la classe Win32_Process :
program EnumerateWMIProperties; uses ComObj, ActiveX, Variants; var FSWbemLocator: OLEVariant; FWMIService: OLEVariant; FWbemObjectSet: OLEVariant; FWbemObject: OLEVariant; FWbemProperty: OLEVariant; EnumProps: IEnumVARIANT; PropCount: LongWord; PropValue: OleVariant; EnumResult: LongWord; i: Integer; begin CoInitialize(nil); FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator'); FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', ''); FWbemObjectSet := FWMIService.ExecQuery('SELECT * FROM Win32_Process', 'WQL', 0); EnumProps := FWbemObjectSet._NewEnum as IEnumVARIANT; while EnumProps.Next(1, FWbemObject, @EnumResult) = 0 do begin PropCount := FWbemObject.Properties_.Count; for i := 0 to PropCount - 1 do begin FWbemProperty := FWbemObject.Properties_.Item(i); WriteLn('Property name: ', FWbemProperty.Name); PropValue := FWbemProperty.Get_Value; WriteLn('Property value: ', PropValue); end; FWbemObject := Unassigned; end; CoUninitialize; end.
Ce code crée une instance de la classe SWbemLocator pour se connecter à l'espace de noms “root\CIMV2” et récupère un ensemble d'objets WMI de la classe Win32_Process. Il utilise ensuite l'interface IEnumVARIANT pour énumérer les propriétés de chaque objet récupéré et affiche le nom et la valeur de chaque propriété. Vous pouvez adapter ce code pour énumérer les propriétés d'autres classes WMI en modifiant la requête WQL.
Vous pourriez laisser un commentaire si vous étiez connecté.