ServiceController Klasa

Definicja

Reprezentuje usługę Windows i umożliwia nawiązywanie połączenia z uruchomioną lub zatrzymaną usługą, manipulowanie nią lub uzyskiwanie informacji o niej.

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

W poniższym przykładzie pokazano użycie ServiceController klasy do kontrolowania przykładu SimpleService usługi.

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żesz użyć ServiceController klasy, aby nawiązać połączenie z istniejącymi usługami i kontrolować ich zachowanie. Podczas tworzenia wystąpienia ServiceController klasy należy ustawić jej właściwości, aby współdziałała z określoną usługą Windows. Następnie możesz użyć klasy , aby uruchomić, zatrzymać i w inny sposób manipulować usługą.

Najprawdopodobniej użyjesz ServiceController składnika w pojemności administracyjnej. Można na przykład utworzyć Windows lub aplikację internetową, która wysyła polecenia niestandardowe do usługi za pośrednictwem ServiceController wystąpienia. Byłoby to przydatne, ponieważ przystawka programu Microsoft Management Console programu Service Control Manager (SCM) nie obsługuje poleceń niestandardowych.

Po utworzeniu ServiceControllerwystąpienia programu należy ustawić na nim dwie właściwości, aby zidentyfikować usługę, z którą współdziała: nazwę komputera i nazwę usługi, którą chcesz kontrolować.

Uwaga

Domyślnie MachineName jest ustawiana na komputer lokalny, więc nie trzeba go zmieniać, chyba że chcesz ustawić wystąpienie, aby wskazywało inny komputer.

Ogólnie rzecz biorąc, autor usługi pisze kod, który dostosowuje akcję skojarzona z określonym poleceniem. Na przykład usługa może zawierać kod odpowiadający ServiceBase.OnPause na polecenie. W takim przypadku niestandardowe przetwarzanie zadania Pause jest uruchamiane przed wstrzymaniem usługi przez system.

Zestaw poleceń, które usługa może przetwarzać, zależy od jego właściwości; na przykład można ustawić CanStop właściwość usługi na false. To ustawienie renderuje polecenie niedostępne w tej określonej usłudze Stop . Uniemożliwia zatrzymanie usługi z programu SCM przez wyłączenie niezbędnego przycisku. Jeśli spróbujesz zatrzymać usługę z kodu, system zgłosi błąd i wyświetli komunikat o błędzie "Nie można zatrzymać servicename".

Konstruktory

ServiceController()

Inicjuje ServiceController nowe wystąpienie klasy, która nie jest skojarzona z określoną usługą.

ServiceController(String)

Inicjuje ServiceController nowe wystąpienie klasy skojarzonej z istniejącą usługą na komputerze lokalnym.

ServiceController(String, String)

Inicjuje ServiceController nowe wystąpienie klasy skojarzonej z istniejącą usługą na określonym komputerze.

Właściwości

CanPauseAndContinue

Pobiera wartość wskazującą, czy można wstrzymać i wznowić usługę.

CanRaiseEvents

Pobiera wartość wskazującą, czy składnik może zgłosić zdarzenie.

(Odziedziczone po Component)
CanShutdown

Pobiera wartość wskazującą, czy usługa powinna być powiadamiana o zamknięciu systemu.

CanStop

Pobiera wartość wskazującą, czy usługa może zostać zatrzymana po jej uruchomieniu.

Container

Pobiera element IContainer zawierający element Component.

(Odziedziczone po Component)
DependentServices

Pobiera zestaw usług, które zależą od usługi skojarzonej z tym ServiceController wystąpieniem.

DesignMode

Pobiera wartość wskazującą, czy Component element jest obecnie w trybie projektowania.

(Odziedziczone po Component)
DisplayName

Pobiera lub ustawia przyjazną nazwę usługi.

Events

Pobiera listę programów obsługi zdarzeń dołączonych do tego Componentelementu .

(Odziedziczone po Component)
MachineName

Pobiera lub ustawia nazwę komputera, na którym znajduje się ta usługa.

ServiceHandle

Pobiera dojście do usługi.

ServiceName

Pobiera lub ustawia nazwę, która identyfikuje usługę, do którego odwołuje się to wystąpienie.

ServicesDependedOn

Zestaw usług, od których zależy ta usługa.

ServiceType

Pobiera typ usługi, do którego odwołuje się ten obiekt.

Site

Pobiera lub ustawia ISite element .Component

(Odziedziczone po Component)
StartType

Pobiera wartość wskazującą sposób uruchamiania usługi reprezentowanej ServiceController przez obiekt.

Status

Pobiera stan usługi, do którego odwołuje się to wystąpienie.

Metody

Close()

Odłącza to ServiceController wystąpienie od usługi i zwalnia wszystkie zasoby przydzielone przez wystąpienie.

Continue()

Kontynuuje usługę po jej wstrzymaniu.

CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
Dispose()

Wykonuje zdefiniowane przez aplikację zadania skojarzone ze zwalnianiem lub resetowaniem zasobów niezarządzanych.

Dispose()

Zwalnia wszelkie zasoby używane przez element Component.

(Odziedziczone po Component)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element ServiceController i opcjonalnie zwalnia zasoby zarządzane.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
ExecuteCommand(Int32)

Wykonuje polecenie niestandardowe w usłudze.

GetDevices()

Pobiera usługi sterowników urządzeń na komputerze lokalnym.

GetDevices(String)

Pobiera usługi sterowników urządzeń na określonym komputerze.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetLifetimeService()
Nieaktualne.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetService(Type)

Zwraca obiekt reprezentujący usługę dostarczaną przez Component obiekt lub przez obiekt Container.

(Odziedziczone po Component)
GetServices()

Pobiera wszystkie usługi na komputerze lokalnym z wyjątkiem usług sterowników urządzeń.

GetServices(String)

Pobiera wszystkie usługi na określonym komputerze z wyjątkiem usług sterowników urządzeń.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
InitializeLifetimeService()
Nieaktualne.

Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
Pause()

Zawiesza operację usługi.

Refresh()

Odświeża wartości właściwości, resetując właściwości do ich bieżących wartości.

Start()

Uruchamia usługę, przekazując bez argumentów.

Start(String[])

Uruchamia usługę, przekazując określone argumenty.

Stop()

Zatrzymuje tę usługę i wszystkie usługi zależne od tej usługi.

Stop(Boolean)

Zatrzymuje usługę i opcjonalnie wszystkie usługi zależne od tej usługi.

ToString()

Zwraca wartość String zawierającą nazwę Componentobiektu , jeśli istnieje. Ta metoda nie powinna być zastępowana.

(Odziedziczone po Component)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
WaitForStatus(ServiceControllerStatus)

Nieskończenie czeka na osiągnięcie określonego stanu usługi.

WaitForStatus(ServiceControllerStatus, TimeSpan)

Czeka na osiągnięcie określonego stanu usługi lub wygaśnięcie określonego limitu czasu.

Zdarzenia

Disposed

Występuje, gdy składnik jest usuwany przez wywołanie Dispose() metody .

(Odziedziczone po Component)

Dotyczy

Zobacz też