Ordinateurs

Répertorier les services à l’aide de la classe de gestion C# : exemple WMI

Je suis un ingénieur logiciel. Je travaille avec les technologies C++, MFC et net depuis 15 ans. J’aime les jeux vidéo et lire des livres.

Qu’est-ce que WMI ?

WMI est Windows Management Instrumentation, et cela aidera dot net framework à récupérer les informations système. WMI est un monde séparé de classes traitant de l’accès aux ressources système. Les classes WMI habituellement utilisées pour récupérer les informations système. La modification des informations système est rarement effectuée via les interfaces WMI. Dans cet article, nous verrons comment créer des instances WMI. Je vais récupérer tous les services en cours d’exécution dans le système et les afficher dans l’élément de liste.

Créer une application basée sur une fenêtre (conception de formulaire)

La première étape consiste à créer l’application Windows. Suivez les étapes indiquées ci-dessous :

  1. Tout d’abord, créez un nouveau projet d’application Windows Visual C # nommé Créer une instance
  2. Une fois le formulaire affiché, concevez-le comme indiqué ci-dessous :

L’exemple d’application

  1. zone de liste contrôler. Son Nom la propriété est définie comme ctrlLstBox
  2. bouton contrôler. Sa propriété Name est définie comme btnServices. alors texte la propriété est définie comme GetServices.
  3. Formulaire Windows. Son texte la propriété est définie comme Obtenir des instances WMI

Une fois la conception terminée, l’événement de clic pour le btnServices bouton a été créé. Pour créer cet événement, dans la vue de conception, double-cliquez sur le bouton Get Services.

Implémentation du code

Double-cliquer sur le bouton Get Services vous laissera dans la fonction ci-dessous. Cette fonction est en fait le gestionnaire d’événements de clic pour le bouton Get Services.

private void btnServices_Click(object sender, EventArgs e)
{
}

Nous allons écrire le code de cette fonction de gestionnaire. Ainsi, lorsqu’un utilisateur clique sur le bouton, le code écrit sur le gestionnaire s’exécute et affiche la sortie dans le contrôle ListBox nommé ctrlLstBox.

Avant de commencer notre codage, nous devons inclure la référence DLL requise à notre CréerInsance projet. Pour ce faire, cliquez sur l’élément de menu Projet->Ajouter une référence…. Dans la boîte de dialogue affichée (l’affichage de la boîte de dialogue peut prendre un certain temps), nous devons sélectionner le La gestion du système élément, puis cliquez sur OK. Pour sélectionner System.Management, assurez-vous que vous êtes dans l’onglet .Net. Ceci est illustré dans l’image ci-dessous :

Ajout d'une référence de projet

A lire aussi :  Comment supprimer votre compte Skype : un guide rapide

Ajout d’une référence de projet

Faites défiler pour continuer

Après avoir ajouté cette référence, notre projet a accès aux fonctionnalités fournies par la DLL DotNet, System.Management.dllSystem.Management.dll. Nous pouvons vérifier si la référence est ajoutée avec succès au projet ou non en vérifiant le nœud de référence à partir de l’explorateur de projet, comme indiqué ci-dessous :

Référence ajoutée

Référence ajoutée

Une fois la référence prête, nous commençons notre codage avec ces étapes.

1) La première étape consiste à ajouter la référence créée ci-dessus en haut du fichier (après l’existence de l’instruction using). Cela nous permettra d’accéder à la classe conservée dans l’espace de noms System.Management. Ce code est illustré ci-dessous :

//Sample 01: Required Name Space
using System.Management;

2) Dans le bouton cliquez sur le gestionnaire d’événements, d’abord, un « system.management.managementclass » a été créé. nous avons passé Win32_Services à son constructeur et, ce faisant, nous obtenons la classe de service Win32 au moment de l’exécution. A partir de cette classe, nous pouvons obtenir toutes les instances qui lui appartiennent. Ci-dessous se trouve le code qui montre la création de la classe ManagementClass nommée service_class.

//Sample 02: Create Management Class
ManagementClass service_class = new ManagementClass("Win32_Service");

3) Tous les objets appartenant au Win32_Service sont récupérés à partir du service_class instance que nous avons créée à partir de l’étape précédente de ce codage. L’appel à la fonction GetInstances() récupérera tous les services en cours d’exécution dans le système en tant que ManagementObject Le recueil. Ceci est illustré dans le code ci-dessous :

//Sample 03: Get all the Objects of Win32_Service class. Each object
//           represent one service
ManagementObjectCollection Service_objects_collection = service_class.GetInstances();

4) Ensuite, nous obtenons chaque instance de la classe ManagementObject en parcourant la collection Service_objects_collection. La construction Foreach est utilisée pour effectuer l’itération. Une fois que nous avons l’instance ManagementObject disponible dans le corps de la boucle Foreach, nous récupérons la propriété name de l’instance et l’ajoutons au contrôle Listbox. Le code est affiché ci-dessous :

//Sample 04: Iterate through each service and display the name of the
//           service
foreach (ManagementObject service in Service_objects_collection)
{
    ctrlLstBox.Items.Add(service["Name"].ToString()); 
} 

La capture d’écran après l’exécution du gestionnaire de clic de bouton est illustrée ci-dessous :

Après le chargement des services

A lire aussi :  Créer une horloge courante dans Excel avec une macro

Après le chargement des services

Le code complet dans le fichier est illustré ci-dessous :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

//Sample 01: Required Name Space
using System.Management;

namespace CreateInstance
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnServices_Click(object sender, EventArgs e)
        {
            //Sample 02: Create Management Class
            ManagementClass service_class = new ManagementClass("Win32_Service");

            //Sample 03: Get all the Objects of Win32_Service class. Each object
            //           represent one service
            ManagementObjectCollection Service_objects_collection = service_class.GetInstances();

            //Sample 04: Iterate through each service and display the name of the
            //           service
            foreach (ManagementObject service in Service_objects_collection)
            {
                ctrlLstBox.Items.Add(service["Name"].ToString()); 
            }
        }
    }
}

Cet article est exact et fidèle au meilleur de la connaissance de l’auteur. Le contenu est uniquement à des fins d’information ou de divertissement et ne remplace pas un conseil personnel ou un conseil professionnel en matière commerciale, financière, juridique ou technique.

© 2013 sirama

Bouton retour en haut de la page