ServiceController Klasa

Definicja

Reprezentuje usługę systemu Windows i umożliwia nawiązanie połączenia z uruchomioną lub zatrzymaną usługą, manipulowanie nią lub uzyskiwanie informacji o nim.Represents a Windows service and allows you to connect to a running or stopped service, manipulate it, or get information about it.

public ref class ServiceController : System::ComponentModel::Component
public ref class ServiceController : IDisposable
public class ServiceController : System.ComponentModel.Component
public class ServiceController : IDisposable
[System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")]
public class ServiceController : System.ComponentModel.Component
type ServiceController = class
    inherit Component
type ServiceController = class
    interface IDisposable
[<System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")>]
type ServiceController = class
    inherit Component
Public Class ServiceController
Inherits Component
Public Class ServiceController
Implements IDisposable
Dziedziczenie
ServiceController
Dziedziczenie
ServiceController
Atrybuty
Implementuje

Przykłady

Poniższy przykład ilustruje użycie ServiceController klasy w celu kontrolowania SimpleService przykładu usługi.The following example demonstrates the use of the ServiceController class to control the SimpleService service example.

using System;
using System.ServiceProcess;
using System.Diagnostics;
using System.Threading;

namespace ServiceControllerSample
{
    class Program
    {
        public enum SimpleServiceCustomCommands
        { StopWorker = 128, RestartWorker, CheckWorker };
        static void Main(string[] args)
        {
            ServiceController[] scServices;
            scServices = ServiceController.GetServices();

            foreach (ServiceController scTemp in scServices)
            {

                if (scTemp.ServiceName == "Simple Service")
                {
                    // Display properties for the Simple Service sample
                    // from the ServiceBase example.
                    ServiceController sc = new ServiceController("Simple Service");
                    Console.WriteLine("Status = " + sc.Status);
                    Console.WriteLine("Can Pause and Continue = " + sc.CanPauseAndContinue);
                    Console.WriteLine("Can ShutDown = " + sc.CanShutdown);
                    Console.WriteLine("Can Stop = " + sc.CanStop);
                    if (sc.Status == ServiceControllerStatus.Stopped)
                    {
                        sc.Start();
                        while (sc.Status == ServiceControllerStatus.Stopped)
                        {
                            Thread.Sleep(1000);
                            sc.Refresh();
                        }
                    }
                    // Issue custom commands to the service
                    // enum SimpleServiceCustomCommands
                    //    { StopWorker = 128, RestartWorker, CheckWorker };
                    sc.ExecuteCommand((int)SimpleServiceCustomCommands.StopWorker);
                    sc.ExecuteCommand((int)SimpleServiceCustomCommands.RestartWorker);
                    sc.Pause();
                    while (sc.Status != ServiceControllerStatus.Paused)
                    {
                        Thread.Sleep(1000);
                        sc.Refresh();
                    }
                    Console.WriteLine("Status = " + sc.Status);
                    sc.Continue();
                    while (sc.Status == ServiceControllerStatus.Paused)
                    {
                        Thread.Sleep(1000);
                        sc.Refresh();
                    }
                    Console.WriteLine("Status = " + sc.Status);
                    sc.Stop();
                    while (sc.Status != ServiceControllerStatus.Stopped)
                    {
                        Thread.Sleep(1000);
                        sc.Refresh();
                    }
                    Console.WriteLine("Status = " + sc.Status);
                    String[] argArray = new string[] { "ServiceController arg1", "ServiceController arg2" };
                    sc.Start(argArray);
                    while (sc.Status == ServiceControllerStatus.Stopped)
                    {
                        Thread.Sleep(1000);
                        sc.Refresh();
                    }
                    Console.WriteLine("Status = " + sc.Status);
                    // Display the event log entries for the custom commands
                    // and the start arguments.
                    EventLog el = new EventLog("Application");
                    EventLogEntryCollection elec = el.Entries;
                    foreach (EventLogEntry ele in elec)
                    {
                        if (ele.Source.IndexOf("SimpleService.OnCustomCommand") >= 0 |
                            ele.Source.IndexOf("SimpleService.Arguments") >= 0)
                            Console.WriteLine(ele.Message);
                    }
                }
            }
        }
    }
}
// This sample displays the following output if the Simple Service
// sample is running:
//Status = Running
//Can Pause and Continue = True
//Can ShutDown = True
//Can Stop = True
//Status = Paused
//Status = Running
//Status = Stopped
//Status = Running
//4:14:49 PM - Custom command received: 128
//4:14:49 PM - Custom command received: 129
//ServiceController arg1
//ServiceController arg2
Imports System.ServiceProcess
Imports System.Diagnostics
Imports System.Threading



Class Program

    Public Enum SimpleServiceCustomCommands
        StopWorker = 128
        RestartWorker
        CheckWorker
    End Enum 'SimpleServiceCustomCommands

    Shared Sub Main(ByVal args() As String)
        Dim scServices() As ServiceController
        scServices = ServiceController.GetServices()

        Dim scTemp As ServiceController
        For Each scTemp In scServices

            If scTemp.ServiceName = "Simple Service" Then
                ' Display properties for the Simple Service sample 
                ' from the ServiceBase example
                Dim sc As New ServiceController("Simple Service")
                Console.WriteLine("Status = " + sc.Status.ToString())
                Console.WriteLine("Can Pause and Continue = " + _
                    sc.CanPauseAndContinue.ToString())
                Console.WriteLine("Can ShutDown = " + sc.CanShutdown.ToString())
                Console.WriteLine("Can Stop = " + sc.CanStop.ToString())
                If sc.Status = ServiceControllerStatus.Stopped Then
                    sc.Start()
                    While sc.Status = ServiceControllerStatus.Stopped
                        Thread.Sleep(1000)
                        sc.Refresh()
                    End While
                End If
                ' Issue custom commands to the service
                ' enum SimpleServiceCustomCommands 
                '    { StopWorker = 128, RestartWorker, CheckWorker };
                sc.ExecuteCommand(Fix(SimpleServiceCustomCommands.StopWorker))
                sc.ExecuteCommand(Fix(SimpleServiceCustomCommands.RestartWorker))
                sc.Pause()
                While sc.Status <> ServiceControllerStatus.Paused
                    Thread.Sleep(1000)
                    sc.Refresh()
                End While
                Console.WriteLine("Status = " + sc.Status.ToString())
                sc.Continue()
                While sc.Status = ServiceControllerStatus.Paused
                    Thread.Sleep(1000)
                    sc.Refresh()
                End While
                Console.WriteLine("Status = " + sc.Status.ToString())
                sc.Stop()
                While sc.Status <> ServiceControllerStatus.Stopped
                    Thread.Sleep(1000)
                    sc.Refresh()
                End While
                Console.WriteLine("Status = " + sc.Status.ToString())
                Dim argArray() As String = {"ServiceController arg1", "ServiceController arg2"}
                sc.Start(argArray)
                While sc.Status = ServiceControllerStatus.Stopped
                    Thread.Sleep(1000)
                    sc.Refresh()
                End While
                Console.WriteLine("Status = " + sc.Status.ToString())
                ' Display the event log entries for the custom commands
                ' and the start arguments.
                Dim el As New EventLog("Application")
                Dim elec As EventLogEntryCollection = el.Entries
                Dim ele As EventLogEntry
                For Each ele In elec
                    If ele.Source.IndexOf("SimpleService.OnCustomCommand") >= 0 Or ele.Source.IndexOf("SimpleService.Arguments") >= 0 Then
                        Console.WriteLine(ele.Message)
                    End If
                Next ele
            End If
        Next scTemp

    End Sub
End Class
' This sample displays the following output if the Simple Service
' sample is running:
'Status = Running
'Can Pause and Continue = True
'Can ShutDown = True
'Can Stop = True
'Status = Paused
'Status = Running
'Status = Stopped
'Status = Running
'4:14:49 PM - Custom command received: 128
'4:14:49 PM - Custom command received: 129
'ServiceController arg1
'ServiceController arg2

Uwagi

Można użyć klasy, ServiceController Aby nawiązać połączenie z zachowaniem istniejących usług i kontrolować je.You can use the ServiceController class to connect to and control the behavior of existing services. Podczas tworzenia wystąpienia ServiceController klasy należy ustawić jego właściwości, aby współdziałać z określoną usługą systemu Windows.When you create an instance of the ServiceController class, you set its properties so it interacts with a specific Windows service. Następnie można użyć klasy, aby uruchomić, zatrzymać i w inny sposób manipulować usługą.You can then use the class to start, stop, and otherwise manipulate the service.

Najprawdopodobniej użyjesz ServiceController składnika w wydajności administracyjnej.You will most likely use the ServiceController component in an administrative capacity. Można na przykład utworzyć aplikację systemu Windows lub sieci Web, która wysyła polecenia niestandardowe do usługi za pomocą ServiceController wystąpienia.For example, you could create a Windows or Web application that sends custom commands to a service through the ServiceController instance. Jest to przydatne, ponieważ Menedżer sterowania usługami (SCM) Microsoft Management Console nie obsługuje poleceń niestandardowych.This would be useful, because the Service Control Manager (SCM) Microsoft Management Console snap-in does not support custom commands.

Po utworzeniu wystąpienia programu należy ServiceController ustawić na nim dwie właściwości, aby zidentyfikować usługę, z którą współdziała: Nazwa komputera i nazwa usługi, którą chcesz kontrolować.After you create an instance of ServiceController, you must set two properties on it to identify the service with which it interacts: the computer name and the name of the service you want to control.

Uwaga

Domyślnie MachineName jest ustawiony na komputer lokalny, więc nie trzeba go zmieniać, chyba że chcesz ustawić wystąpienie na inny komputer.By default, MachineName is set to the local computer, so you do not need to change it unless you want to set the instance to point to another computer.

Zazwyczaj autor usługi zapisuje kod, który dostosowuje akcję skojarzoną z określonym poleceniem.Generally, the service author writes code that customizes the action associated with a specific command. Na przykład usługa może zawierać kod, aby odpowiedzieć na ServiceBase.OnPause polecenie.For example, a service can contain code to respond to an ServiceBase.OnPause command. W takim przypadku niestandardowe przetwarzanie Pause zadania zostanie uruchomione przed wstrzymaniem usługi przez system.In that case, the custom processing for the Pause task runs before the system pauses the service.

Zestaw poleceń, które może przetworzyć usługa, zależy od jej właściwości; na przykład można ustawić CanStop Właściwość dla usługi na false .The set of commands a service can process depends on its properties; for example, you can set the CanStop property for a service to false. To ustawienie renderuje Stop polecenie niedostępne w danej usłudze. uniemożliwia to zatrzymanie usługi z SCM przez wyłączenie niezbędnego przycisku.This setting renders the Stop command unavailable on that particular service; it prevents you from stopping the service from the SCM by disabling the necessary button. Jeśli spróbujesz zatrzymać usługę z kodu, system zgłasza błąd i wyświetli komunikat o błędzie "nie można zatrzymać" servicename .If you try to stop the service from your code, the system raises an error and displays the error message "Failed to stop servicename."

Konstruktory

ServiceController()

Inicjuje nowe wystąpienie ServiceController klasy, która nie jest skojarzona z określoną usługą.Initializes a new instance of the ServiceController class that is not associated with a specific service.

ServiceController(String)

Inicjuje nowe wystąpienie ServiceController klasy skojarzonej z istniejącą usługą na komputerze lokalnym.Initializes a new instance of the ServiceController class that is associated with an existing service on the local computer.

ServiceController(String, String)

Inicjuje nowe wystąpienie ServiceController klasy skojarzonej z istniejącą usługą na określonym komputerze.Initializes a new instance of the ServiceController class that is associated with an existing service on the specified computer.

Właściwości

CanPauseAndContinue

Pobiera wartość wskazującą, czy można wstrzymywać i wznawiać usługę.Gets a value indicating whether the service can be paused and resumed.

CanRaiseEvents

Pobiera wartość wskazującą, czy składnik może zgłosić zdarzenie.Gets a value indicating whether the component can raise an event.

(Odziedziczone po Component)
CanShutdown

Pobiera wartość wskazującą, czy usługa powinna być powiadamiana o zamknięciu systemu.Gets a value indicating whether the service should be notified when the system is shutting down.

CanStop

Pobiera wartość wskazującą, czy usługa może zostać zatrzymana po jej uruchomieniu.Gets a value indicating whether the service can be stopped after it has started.

Container

Pobiera IContainer , który zawiera Component .Gets the IContainer that contains the Component.

(Odziedziczone po Component)
DependentServices

Pobiera zestaw usług, które są zależne od usługi skojarzonej z tym ServiceController wystąpieniem.Gets the set of services that depends on the service associated with this ServiceController instance.

DesignMode

Pobiera wartość wskazującą, czy Component jest aktualnie w trybie projektowania.Gets a value that indicates whether the Component is currently in design mode.

(Odziedziczone po Component)
DisplayName

Pobiera lub ustawia przyjazną nazwę usługi.Gets or sets a friendly name for the service.

Events

Pobiera listę programów obsługi zdarzeń, które są dołączone do tego elementu Component .Gets the list of event handlers that are attached to this Component.

(Odziedziczone po Component)
MachineName

Pobiera lub ustawia nazwę komputera, na którym znajduje się ta usługa.Gets or sets the name of the computer on which this service resides.

ServiceHandle

Pobiera dojście do usługi.Gets the handle for the service.

ServiceName

Pobiera lub ustawia nazwę identyfikującą usługę, do której odwołuje się to wystąpienie.Gets or sets the name that identifies the service that this instance references.

ServicesDependedOn

Zestaw usług, od których zależy ta usługa.The set of services that this service depends on.

ServiceType

Pobiera typ usługi, do której odwołuje się ten obiekt.Gets the type of service that this object references.

Site

Pobiera lub ustawia wartość ISite Component .Gets or sets the ISite of the Component.

(Odziedziczone po Component)
StartType

Pobiera wartość wskazującą sposób uruchomienia usługi reprezentowanej przez ServiceController obiekt.Gets a value that indicates how the service represented by the ServiceController object starts.

Status

Pobiera stan usługi, do której odwołuje się to wystąpienie.Gets the status of the service that is referenced by this instance.

Metody

Close()

Rozłącza to ServiceController wystąpienie od usługi i zwalnia wszystkie zasoby przypisane do wystąpienia.Disconnects this ServiceController instance from the service and frees all the resources that the instance allocated.

Continue()

Kontynuuje działanie usługi po jej wstrzymaniu.Continues a service after it has been paused.

CreateObjRef(Type)

Tworzy obiekt, który zawiera wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikacji z obiektem zdalnym.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Odziedziczone po MarshalByRefObject)
Dispose()

Wykonuje zdefiniowane przez aplikację zadania skojarzone ze zwalnianiem lub resetowaniem zasobów niezarządzanych.Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

Dispose()

Zwalnia wszelkie zasoby używane przez element Component.Releases all resources used by the Component.

(Odziedziczone po Component)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element ServiceController i opcjonalnie zwalnia zasoby zarządzane.Releases the unmanaged resources used by the ServiceController and optionally releases the managed resources.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
ExecuteCommand(Int32)

Wykonuje polecenie niestandardowe dla usługi.Executes a custom command on the service.

GetDevices()

Pobiera usługi sterowników urządzeń na komputerze lokalnym.Retrieves the device driver services on the local computer.

GetDevices(String)

Pobiera usługi sterowników urządzeń na określonym komputerze.Retrieves the device driver services on the specified computer.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetLifetimeService()

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
GetService(Type)

Zwraca obiekt, który reprezentuje usługę dostarczoną przez Component lub przez Container .Returns an object that represents a service provided by the Component or by its Container.

(Odziedziczone po Component)
GetServices()

Pobiera wszystkie usługi na komputerze lokalnym, z wyjątkiem usług sterownika urządzenia.Retrieves all the services on the local computer, except for the device driver services.

GetServices(String)

Pobiera wszystkie usługi na określonym komputerze, z wyjątkiem usług sterownika urządzenia.Retrieves all the services on the specified computer, except for the device driver services.

GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
InitializeLifetimeService()

Uzyskuje obiekt usługi istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy skróconą kopię bieżącego MarshalByRefObject obiektu.Creates a shallow copy of the current MarshalByRefObject object.

(Odziedziczone po MarshalByRefObject)
Pause()

Wstrzymuje operację usługi.Suspends a service's operation.

Refresh()

Odświeża wartości właściwości przez zresetowanie właściwości do ich bieżących wartości.Refreshes property values by resetting the properties to their current values.

Start()

Uruchamia usługę, przekazując nie argumenty.Starts the service, passing no arguments.

Start(String[])

Uruchamia usługę, przekazując określone argumenty.Starts a service, passing the specified arguments.

Stop()

Powoduje zatrzymanie tej usługi i wszystkich usług, które są zależne od tej usługi.Stops this service and any services that are dependent on this service.

ToString()

Zwraca wartość String zawierającą nazwę Component (jeśli istnieje).Returns a String containing the name of the Component, if any. Ta metoda nie powinna być przesłaniana.This method should not be overridden.

(Odziedziczone po Component)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)
WaitForStatus(ServiceControllerStatus)

Nieskończonie czeka na osiągnięcie określonego stanu przez usługę.Infinitely waits for the service to reach the specified status.

WaitForStatus(ServiceControllerStatus, TimeSpan)

Czeka, aż Usługa osiągnie określony stan lub określony limit czasu wygaśnie.Waits for the service to reach the specified status or for the specified time-out to expire.

Zdarzenia

Disposed

Występuje, gdy składnik zostanie usunięty przez wywołanie Dispose() metody.Occurs when the component is disposed by a call to the Dispose() method.

(Odziedziczone po Component)

Dotyczy

Zobacz też