ServiceController Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje usługę systemu 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
- Dziedziczenie
-
ServiceController
- Atrybuty
- Implementuje
Przykłady
W poniższym przykładzie pokazano użycie klasy ServiceController do kontrolowania przykładu usługi SimpleService
.
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ć klasy ServiceController, aby nawiązać połączenie z istniejącymi usługami i kontrolować ich zachowanie. Podczas tworzenia wystąpienia klasy ServiceController należy ustawić jego właściwości tak, 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 składnika ServiceController 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 wystąpienia ServiceController. Byłoby to przydatne, ponieważ przystawka programu Microsoft Management Console programu Service Control Manager (SCM) nie obsługuje poleceń niestandardowych.
Po utworzeniu wystąpienia ServiceControllernależ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ć.
Nuta
Domyślnie MachineName jest ustawiona 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 polecenia. W takim przypadku niestandardowe przetwarzanie dla 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ć właściwość CanStop dla usługi na wartość false
. To ustawienie powoduje, że polecenie Stop
jest niedostępne w tej konkretnej usłudze; uniemożliwia zatrzymanie usługi z poziomu 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 nowe wystąpienie klasy ServiceController, która nie jest skojarzona z określoną usługą. |
ServiceController(String, String) |
Inicjuje nowe wystąpienie klasy ServiceController skojarzonej z istniejącą usługą na określonym komputerze. |
ServiceController(String) |
Inicjuje nowe wystąpienie klasy ServiceController skojarzonej z istniejącą usługą na komputerze lokalnym. |
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 można zatrzymać usługę po jej uruchomieniu. |
Container |
Pobiera IContainer, który zawiera Component. (Odziedziczone po Component) |
DependentServices |
Pobiera zestaw usług, które zależą od usługi skojarzonej z tym wystąpieniem ServiceController. |
DesignMode |
Pobiera wartość wskazującą, czy Component 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 tej Component. (Odziedziczone po Component) |
MachineName |
Pobiera lub ustawia nazwę komputera, na którym znajduje się ta usługa. |
ServiceHandle |
Pobiera dojście dla 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 ISiteComponent. (Odziedziczone po Component) |
StartType |
Pobiera wartość wskazującą sposób uruchamiania usługi reprezentowanej przez obiekt ServiceController. |
Status |
Pobiera stan usługi, do którego odwołuje się to wystąpienie. |
Metody
Close() |
Odłącza to wystąpienie ServiceController od usługi i zwalnia wszystkie przydzielone zasoby. |
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 zadania zdefiniowane przez aplikację skojarzone z zwalnianiem, wydawaniem lub resetowaniem niezarządzanych zasobów. |
Dispose() |
Zwalnia wszystkie zasoby używane przez Component. (Odziedziczone po Component) |
Dispose(Boolean) |
Zwalnia niezarządzane zasoby używane przez ServiceController i opcjonalnie zwalnia zarządzane zasoby. |
Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (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 reprezentujący usługę dostarczaną przez Component lub 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() |
Pobiera Type 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 Object. (Odziedziczone po Object) |
MemberwiseClone(Boolean) |
Tworzy płytkią kopię bieżącego obiektu MarshalByRefObject. (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 String zawierającą nazwę Component, 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, TimeSpan) |
Czeka na osiągnięcie określonego stanu usługi lub wygaśnięcie określonego limitu czasu. |
WaitForStatus(ServiceControllerStatus) |
Nieskończenie czeka na osiągnięcie określonego stanu przez usługę. |
Zdarzenia
Disposed |
Występuje, gdy składnik jest usuwany przez wywołanie metody Dispose(). (Odziedziczone po Component) |