Gewusst wie: Abrufen von Listen von Diensten

Aktualisiert: November 2007

Mit der GetServices-Methode für die ServiceController-Klasse kann eine Liste von Diensten für einen bestimmten Computer abgerufen werden. Von der GetServices-Methode wird ein Array mit allen Diensten zurückgegeben, die für den Computer verfügbar sind. Ausgenommen sind die Dienste, die mit Gerätetreibern verknüpft sind. Diese können mit der GetDevices-Methode abgerufen werden.

Bei beiden Methoden kann entweder ein bestimmter Computer gewählt werden, für den Informationen abgerufen werden sollen, oder es können keine Parameter übergeben werden. In diesem Fall werden die Dienste für den lokalen Computer abgerufen.

So rufen Sie eine Liste von Diensten ab

  1. Erstellen Sie ein Array vom Typ ServiceController, das die Ergebnisse der Abfrage enthalten soll.

  2. Rufen Sie die entsprechende Methode für die ServiceController-Klasse auf. Legen Sie das Array auf eine der folgenden Weisen auf die Ergebnisse fest:

    • Rufen Sie die GetServices-Methode ohne Parameter auf, um die mit keinem Gerätetreiber verknüpften Dienste von dem lokalen Computer abzurufen:

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetServices()
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetServices();
      
      System.ServiceProcess.ServiceController services[];
      services = System.ServiceProcess.ServiceController.GetServices();
      
    • Rufen Sie die GetServices-Methode auf, um die mit keinem Gerätetreiber verknüpften Dienste von einem bestimmten Computer abzurufen. Geben Sie den Computer, von dem die Informationen abgerufen werden sollen, als einen Zeichenfolgenparameter an:

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetServices( _
         "machinename")
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetServices(
                 "machinename");
      
    • Rufen Sie die GetDevices-Methode ohne Parameter auf, um die mit einem Gerätetreiber verknüpften Dienste von dem lokalen Computer abzurufen:

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetDevices()
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetDevices();
      
      
    • Rufen Sie die GetDevices-Methode auf, um die mit einem Gerätetreiber verknüpften Dienste von einem bestimmten Computer abzurufen. Geben Sie den Computer, von dem die Informationen abgerufen werden sollen, als einen Zeichenfolgenparameter an:

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetDevices( _
         "machinename")
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetDevices(
                 "machinename");
      

    Mithilfe von folgendem Code wird gezeigt, wie ein Satz von Diensten auf dem lokalen Computer abgerufen wird und Informationen über die einzelnen Dienste in einem Listenfeld angezeigt werden. Beachten Sie, dass die GetServices-Methode ein Array von ServiceController-Objekten zurückgibt. Jeder zurückgegebene ServiceController stellt einen Dienst für den abgefragten Computer dar:

    Sub ListServices()
        Dim ListBox1 As ListBox
    
        Dim services() As System.ServiceProcess.ServiceController
        Dim i As Integer
        services = System.ServiceProcess.ServiceController.GetServices()
        ListBox1.Items.Clear()
        For i = 0 To services.Length - 1
            ListBox1.Items.Add(services(i).ServiceName)
        Next
    End Sub
    
     private void ListServices()
        {
            ListBox listBox1 = null;
    
            System.ServiceProcess.ServiceController[] services;
            services = System.ServiceProcess.ServiceController.GetServices();
            listBox1.Items.Clear();
            for (int i = 0; i < services.Length; i++)
            {
                listBox1.Items.Add(services[i].ServiceName);
            }
        }
    

Dieses Codebeispiel ist auch als Visual Basic-IntelliSense-Codeausschnitt verfügbar. Das Beispiel befindet sich in der Codeausschnittauswahl unter Windows-Betriebssystem > Windows-Dienste. Weitere Informationen finden Sie unter Gewusst wie: Einfügen von Ausschnitten in den Code (Visual Basic).

Siehe auch

Aufgaben

Gewusst wie: Erstellen von Instanzen von ServiceController-Komponenten

Gewusst wie: Ausführen von Verwaltungsaufgaben für Dienste

Konzepte

Einführung in die Kommunikation mit vorhandenen Diensten