begin process at 2010 02 10 10:58:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > MISE EN OEUVRE DE WMI (VIA WQL)

MISE EN OEUVRE DE WMI (VIA WQL)


 Information sur la source

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :wmi, wql, processus, service, windows Niveau :Initié Date de création :30/03/2006 Date de mise à jour :30/03/2006 16:08:55 Vu / téléchargé :7 833 / 903

Auteur : fjohnny

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
  Exemple de code permettant l'utilisation de WMI sous Windows 2000/XP/2003. Il est également possible de l'utiliser sous Win98 à condition d'installer WMI.
  L'intérêt majeur d'utiliser WMI est double car il permet d'uniformiser l'appel aux API d'une part et d'autre part il permet de faire des requêtes sur des ordinateurs distants.
Evidemment, il va s'en dire que la plupart des opérations nécessitent les droits administrateurs.

Plusieurs fonctions sont disponibles :

* WMIExecuteWQL : Permet de faire une requête WQL dans un espace de nom donné et de trouver les propriétés des classes WMI.
Par ex: Showmessage(WMIExecuteWQL('.','root\cimv2','Select * from Win32_Processor').Text);  {Va afficher les différentes informations disponibles sur le processeur ou les processeurs, si il y en a plusieurs}.

* WMIServiceControl : Permet d'Arrêter/Démarrer/Mettre en pause un service grâce à son nom.
Par exemple : if WMIServiceControl ('.','Avertissement',WMI_SERVICE_STOP) then Showmessage('Le service "Avertissement" a été arrêté !');

* WMIArretPC : Permet d'arrêter/Redémarrer/Fermer la session sur un ordinateur local ou distant !
Par exemple: if WMIArretPC ('.',WMI_LOGOFF+WMI_FORCED) then Showmessage ('Vous venez de forcer la fermeture de session !');

* WMIArretProcess : Permet de "killer" un processus grâce son PID (Process Identifier).
Par Exemple: If WMIArretProcess ('.',2563) then Showmessage ('Vous venez d''arrêter le processus dont le PID est :'+IntToStr(PID));

* EnnumereClasseWMI : Permet d'énumérer les classes de l'espace de nom spécifié.
Par exemple: ListBox1.Items := EnnumereClasseWMI('root\cimv2');

Dans l'exemple du fichier ZIP, j'ai implémenté uniquement 2 de ces fonctions : EnnumereClasseWMI et WMIExecuteWQL mais les autres sont dans l'unité WMI.pas.

Bonne programmation.

Source

  • Function WMIExecuteWQL (NomPCDistant,EspaceNom,RequeteWQL : String): TStringList;Overload;
  • var
  • WMILocator: TSWbemLocator;
  • WmiService: SWbemServices;
  • WmiObject: SWbemObject;
  • wmiObjectSet: SWbemObjectSet;
  • WmiProperty: SWbemProperty;
  • WmiPropertySet: SWbemPropertySet;
  • PropertyEnumerator,
  • ObjectEnumerator: IEnumVariant;
  • ArrayVariant: OleVariant;
  • NumberItem: LongWord;
  • begin
  • Try
  • try
  • WMILocator:= TSWbemLocator.Create(nil);Result := TStringList.Create;
  • WmiService:= WMILocator.ConnectServer(NomPCDistant, EspaceNom,'','','','', wbemConnectFlagUseMaxWait, nil);
  • WmiObjectSet := wmiService.ExecQuery(RequeteWQL,'WQL',wbemFlagReturnImmediately, 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;
  • Result.Add(WmiProperty.Name+' = '+SWbempropertytostr(WmiProperty));
  • end;
  • End;
  • except
  • LogEvenement('!!!Echec de l''exécution de la requête WMI.');
  • end;
  • Finally
  • WMILocator.Disconnect; WMILocator.Free;
  • end;
  • end;
Function WMIExecuteWQL (NomPCDistant,EspaceNom,RequeteWQL : String): TStringList;Overload;
var
  WMILocator:          TSWbemLocator;
  WmiService:          SWbemServices;
  WmiObject:           SWbemObject;
  wmiObjectSet:        SWbemObjectSet;
  WmiProperty:         SWbemProperty;
  WmiPropertySet:      SWbemPropertySet;
  PropertyEnumerator,
  ObjectEnumerator:    IEnumVariant;
  ArrayVariant:        OleVariant;
  NumberItem:          LongWord;
begin
Try
 try
   WMILocator:= TSWbemLocator.Create(nil);Result := TStringList.Create;
   WmiService:= WMILocator.ConnectServer(NomPCDistant, EspaceNom,'','','','', wbemConnectFlagUseMaxWait, nil);
   WmiObjectSet := wmiService.ExecQuery(RequeteWQL,'WQL',wbemFlagReturnImmediately, 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;
             Result.Add(WmiProperty.Name+' = '+SWbempropertytostr(WmiProperty));
           end;
     End;
 except
    LogEvenement('!!!Echec de l''exécution de la requête WMI.');
 end;
Finally
  WMILocator.Disconnect; WMILocator.Free;
end;
end;


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

30 mars 2006 16:08:56 :
Correction de quelques fautes d'orthographe.

 Sources du même auteur

Source avec Zip Source avec une capture INFORMATIONS SYSTÈME (VIA WMI)

 Sources de la même categorie

Source avec Zip NEXTGENS -> UNITÉS DE TYPES ÉVOLUÉS NOUVELLE GÉNÉRATION (DE... par f0xi
Source avec Zip Source avec une capture AUTO-COMPLÉTION D'UN CONTRÔLE DE SAISIE par Bacterius
Source avec Zip CARDS GAME SDK 1.0.0.0 par f0xi
Source avec Zip Source avec une capture TRAYICON - VOTRE ICONE DANS LA BARRE DES TACHES par Bacterius
Source avec Zip Source avec une capture WINHIDER _ CACHER UN PROGRAMME DE L'ÉCRAN ET DE LA BARRE DE ... par soldier8514

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture GLIBWMI VCL COMPONENT LIBRARY 1.6B par Neftali
Source avec Zip Source avec une capture AUTO-COMPLÉTION D'UN CONTRÔLE DE SAISIE par Bacterius
Source avec Zip Source avec une capture PACKAGE MICROSOFT par blueperfect
Source avec Zip Source avec une capture SIMULATEUR DU L'ORDONNANCEUR SRT par offlake
Source avec Zip Source avec une capture INFORMATIONS SYSTÈME (VIA WMI) par fjohnny

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Plusieurs instances d'un même service ? [ par chezrv ] Pourrait-on m'indiquer la solution pour installer plusieurs instances d'un même service sur windows NT (4 ou 2k) sans avoir à modifier et recompiler l Acceder au zones memoire d'un autre processus (delphi-windows) [ par pataphysicien ] Bonjour,Voila je cherche a savoir comment on peut lire la mém classe TService :Application Service et lancement d'executable [ par zorg724 ] Bonjour, j'ai créé un service window (programme qui tourne en tache de fond- icone 'service' dans le menu nouveau->application sous delphi : Classe Web service delphi 6 et windows 2003 server [ par abdouinf ] Bonjour à tous,j'ai developpé un service web en utilisant SOAP, lorsque je le publie sur un ordinateur executant windows XP ça marche t logon windows avec un service delphi [ par peperel ] J' ait besoin de nettoyer quelques dossier avant de lancer la session Xp.J' ait cree une service qui s' en ocuppe. S' est un service que demarre récupération du repertoire de l'exe d'un processus windows [ par miarynante ] Slt,je suis bloqué sur mon petit programme permettant de lister les processus win en cours d'execution avec les rep de l'executable du processus. En f Evènement d'ouverture de session Windows dans un service [ par Gilles2GT ] Bonjour.Comment, dans un service TService, détecter l'évènement d'ouverture de session, pour, par exemple, remettre une icone en Systra créer un service indispensable a windows XP [ par serial warez ] Bonjour tout le monde. Voila j'essaye de faire un systeme de protection pour mon PC, et j'aurais besoin de lancer mon programme grace a un service, m chemin des processus actif windows [ par bazbaz2020 ] je veut recuperer un chemain d'un fichier en cour d'execution comme explorer dans les processus : " c:\windows\explorer.exe " s.v.p repondez mon au je débute avec un service que j'ai pas pu le démarer (startservice) [ par tomylibre ] salut à tous, je programme un service windows avec Delphi entreprise 7 , avec un Tservice , hier g avancer un peut avec un ami dans ce forum a faire l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales