Udostępnij za pośrednictwem


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 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ć jego właściwości, aby współdziałała z określoną usługą systemu 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ć aplikację systemu Windows lub internetową, która wysyła polecenia niestandardowe do usługi za pośrednictwem ServiceController wystąpienia. Byłoby to przydatne, ponieważ przystawka Menedżer sterowania usługami (SCM) Microsoft Konsoli zarządzania 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 ustawiona na komputer lokalny, więc nie trzeba go zmieniać, chyba że chcesz ustawić wystąpienie tak, 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 na ServiceBase.OnPause polecenie. W takim przypadku niestandardowe przetwarzanie zadania Pause jest uruchamiane przed wstrzymaniem usługi przez system.

Zestaw poleceń, które usługa może przetworzyć, zależy od jej właściwości; na przykład można ustawić CanStop właściwość dla usługi na falsewartość . To ustawienie powoduje, że polecenie jest niedostępne w tej konkretnej usłudze Stop . Uniemożliwia zatrzymanie usługi z poziomu 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ługę można zatrzymać 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ę identyfikującą 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 wartość ISite .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 przydzielone zasoby.

Continue()

Kontynuuje działanie usługi 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()
Przestarzałe.

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, który reprezentuje usługę dostarczaną przez Component obiekt lub przez element 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()
Przestarzałe.

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ż