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ą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
- 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 false
wartość . 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) |