Gewusst wie: Erstellen von Instanzen von ServiceController-Komponenten

Aktualisiert: November 2007

Mit der ServiceController-Komponente kann die Verbindung zu einem vorhandenen Dienst aufgebaut und sein Verhalten gesteuert werden. Sobald eine Instanz der ServiceController-Klasse erstellt wird, werden ihre Eigenschaften so festgelegt, dass sie mit einem bestimmten Windows-Dienst interagiert. Danach kann der Dienst mit der Klasse gestartet, beendet und anderweitig geändert werden.

In den meisten Fällen wird ServiceController auf Verwaltungsebene verwendet. Sie können beispielsweise eine Windows- oder ASP.NET-Webanwendung erstellen, von der über eine Instanz der ServiceController-Komponente benutzerdefinierte Befehle an einen Dienst gesendet werden. Dies ist insofern nützlich, da vom Dienststeuerungs-Manager keine benutzerdefinierten Befehle unterstützt werden.

Es gibt mehrere Möglichkeiten, eine Instanz der ServiceController-Komponente zu erstellen:

  • Eine Instanz der ServiceController-Komponente kann von der Registerkarte Komponenten der Toolbox in ein Formular oder einen anderen Designer gezogen werden.

  • Im Server-Explorer kann dem Designer eine ServiceController-Komponente hinzugefügt werden.

  • Eine Instanz der ServiceController-Klasse kann programmgesteuert erstellt werden.

Nachdem eine Instanz von ServiceController erstellt wurde, müssen zwei Eigenschaften für sie festgelegt werden, mit denen der Dienst identifiziert wird, mit dem sie interagiert: der Computername und der Name des Dienstes, der gesteuert werden soll.

Hinweis:

Standardmäßig erhält MachineName den Namen des lokalen Computers. Der Wert muss erst dann geändert werden, wenn die Komponenteninstanz so festgelegt wird, dass sie auf einen anderen Computer zeigt.

Hinweis:

Je nach den aktiven Einstellungen oder der verwendeten Version können sich die angezeigten Dialogfelder und Menübefehle von den in der Hilfe beschriebenen unterscheiden. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. Weitere Informationen hierzu finden Sie unter Visual Studio-Einstellungen.

So erstellen und konfigurieren Sie eine ServiceController-Komponente mit dem Server-Explorer

  1. Fügen Sie im Server-Explorer den gewünschten Server hinzu, sofern dieser noch nicht aufgelistet ist. Weitere Informationen hierzu finden Sie unter Gewusst wie: Zugreifen auf und Initialisieren von Server-Explorer/Datenbank-Explorer.

  2. Erweitern Sie den Knoten Dienste, und suchen Sie dann den Dienst, für den Sie Verwaltungsaufgaben durchführen möchten.

  3. Klicken Sie mit der rechten Maustaste auf den Dienst und dann auf Zum Designer hinzufügen.

    Im Projekt wird eine ServiceController-Komponente angezeigt, die für die Interaktion mit dem ausgewählten Dienst konfiguriert ist.

So erstellen und konfigurieren Sie eine ServiceController-Komponente von der Toolbox

  1. Rufen Sie in der Toolbox die Registerkarte Komponenten auf.

  2. Markieren Sie das ServiceController-Symbol, und ziehen Sie es auf die Designeroberfläche des Formulars oder der Komponente.

  3. Legen Sie die folgenden Eigenschaften fest.

    Eigenschaft

    Einstellung

    MachineName

    Der Name des Computers, auf dem der Dienst vorhanden ist, oder "." für den lokalen Computer.

    ServiceName

    Der Name des Dienstes, mit dem interagiert werden soll.

    Tipp:

    Sie können mit dem Server-Explorer überprüfen, auf welchen Wert ServiceName für jeden angegebenen Dienst festgelegt werden muss. Wählen Sie im Server-Explorer den gewünschten Dienst aus. Im Eigenschaftenfenster wird ServiceName angezeigt.

So erstellen und konfigurieren Sie eine ServiceController-Komponente programmgesteuert

  1. Erstellen Sie im Code eine Instanz der ServiceController-Klasse.

  2. Legen Sie die MachineName-Eigenschaft und die ServiceName-Eigenschaft fest, um den Dienst anzugeben, den Sie steuern möchten.

    Im folgenden Beispiel wird gezeigt, wie eine ServiceController-Komponente erstellt wird, die mit dem IIS Admin-Dienst für den lokalen Computer interagiert. Von der Komponente wird dann der mit dem Controller verknüpfte Dienst abgefragt. Nachdem ermittelt worden ist, dass Befehle zum Beenden akzeptiert werden, wird der Befehl erteilt. Bei diesem Beispiel handelt es sich um einen Teil eines Windows-Projekts, in dem ein Formular mit verschiedenen Schaltflächen verwendet wird, um den Dienst zu starten, zu beenden und anderweitig zu ändern. Jedes Mal, wenn auf eine Schaltfläche geklickt wird, wird die Bedingung ausgewertet. Statusinformationen werden in einem Label-Steuerelement angezeigt.

    Hinweis:

    Bevor diese Beispiele ausgeführt werden können, muss ein Verweis auf System.ServiceProcess.dll hinzugefügt und eine Imports-Anweisung oder eine using-Anweisung für den System.ServiceProcess-Namespace eingefügt werden.

    Sub Main()
        Dim myController As _
           New System.ServiceProcess.ServiceController("IISAdmin")
    
        If myController.CanStop Then
            Debug.WriteLine(myController.ServiceName & " can be stopped.")
        Else
            Debug.WriteLine(myController.ServiceName & " cannot stop.")
        End If
    End Sub
    
     public static void Main(string[] args)
        {
            System.ServiceProcess.ServiceController myController =
               new System.ServiceProcess.ServiceController("IISAdmin");
            if (myController.CanStop)
            {
                System.Diagnostics.Debug.WriteLine(
                   myController.DisplayName + "  can be stopped.");
            }
            else
            {
                System.Diagnostics.Debug.WriteLine(
                   myController.DisplayName + "  cannot stop.");
            }
        }
    

Siehe auch

Aufgaben

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

Gewusst wie: Abrufen von Listen von Diensten

Konzepte

Einführung in die Kommunikation mit vorhandenen Diensten