begin process at 2012 02 05 01:36:50
  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é :9 468 / 1 007

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 Source avec une capture KINECT TEST V1 par FFCAST
Source avec Zip DÉCOUPER UNE FENÊTRE par gta126
Source avec Zip TRANSCRIRE UN FICHIER OPEN FINANCIAL EXCHANGE (OFX) EN FICHI... par jeffem
Source avec Zip Source avec une capture MSXML 4.0 VALIDATION XML / XSD par redtux
Source avec Zip FBRENOMMEADOBJET par fbalien

 Sources en rapport avec celle ci

Source avec Zip LECTURE DE LA MEMOIRE D'UN AUTRE PROCESSUS par Mokost
Source avec Zip Source avec une capture OBSERVATEUR DE PROCESSUS ACTIFS; VPROCESS 1,0 par Neftali
Source avec Zip Source avec une capture GLIBWMI VCL COMPONENT LIBRARY 1.8B 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 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...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,343 sec (3)

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