ServiceController Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Vertegenwoordigt een Windows-service en stelt u in staat om verbinding te maken met een actieve of gestopte service, deze te manipuleren of informatie over deze service op te halen.
public ref class ServiceController : System::ComponentModel::Component
public class ServiceController : System.ComponentModel.Component
[System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")]
public class ServiceController : System.ComponentModel.Component
type ServiceController = class
inherit Component
[<System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")>]
type ServiceController = class
inherit Component
Public Class ServiceController
Inherits Component
- Overname
- Kenmerken
Voorbeelden
In het volgende voorbeeld ziet u het gebruik van de ServiceController klasse om het SimpleService servicevoorbeeld te beheren.
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
Opmerkingen
U kunt de ServiceController klasse gebruiken om verbinding te maken met en het gedrag van bestaande services te beheren. Wanneer u een exemplaar van de klasse ServiceController maakt, stelt u de eigenschappen in zodat deze communiceert met een specifieke Windows-service. Vervolgens kunt u de klasse gebruiken om de service te starten, te stoppen en anderszins te bewerken.
Waarschijnlijk gebruikt u het ServiceController onderdeel in een beheercapaciteit. U kunt bijvoorbeeld een Windows of webtoepassing maken waarmee aangepaste opdrachten naar een service worden verzonden via het ServiceController-exemplaar. Dit is handig, omdat de SCM-module (Service Control Manager) Microsoft Management Console geen aangepaste opdrachten ondersteunt.
Nadat u een exemplaar van ServiceControllerhebt gemaakt, moet u er twee eigenschappen op instellen om de service te identificeren waarmee deze communiceert: de computernaam en de naam van de service die u wilt beheren.
Note
MachineName De standaardinstelling is ingesteld op de lokale computer, dus u hoeft deze niet te wijzigen, tenzij u het exemplaar wilt instellen op een andere computer.
Over het algemeen schrijft de auteur van de service code waarmee de actie wordt aangepast die is gekoppeld aan een specifieke opdracht. Een service kan bijvoorbeeld code bevatten om te reageren op een ServiceBase.OnPause opdracht. In dat geval wordt de aangepaste verwerking voor de Pause taak uitgevoerd voordat het systeem de service onderbreekt.
De set opdrachten die een service kan verwerken, is afhankelijk van de eigenschappen ervan; U kunt bijvoorbeeld de CanStop eigenschap voor een service instellen op false. Met deze instelling wordt de Stop opdracht niet beschikbaar voor die specifieke service weergegeven. Hiermee voorkomt u dat de service van de SCM wordt gestopt door de benodigde knop uit te schakelen. Als u de service probeert te stoppen met uw code, wordt er een fout gegenereerd en wordt het foutbericht 'Kan niet stoppen' servicenameweergegeven.
Constructors
| Name | Description |
|---|---|
| ServiceController() |
Initialiseert een nieuw exemplaar van de ServiceController klasse die niet is gekoppeld aan een specifieke service. |
| ServiceController(String, String) |
Initialiseert een nieuw exemplaar van de ServiceController klasse die is gekoppeld aan een bestaande service op de opgegeven computer. |
| ServiceController(String) |
Initialiseert een nieuw exemplaar van de ServiceController klasse die is gekoppeld aan een bestaande service op de lokale computer. |
Eigenschappen
| Name | Description |
|---|---|
| CanPauseAndContinue |
Hiermee wordt een waarde opgehaald die aangeeft of de service kan worden onderbroken en hervat. |
| CanRaiseEvents |
Hiermee wordt een waarde opgehaald die aangeeft of het onderdeel een gebeurtenis kan genereren. (Overgenomen van Component) |
| CanShutdown |
Hiermee wordt een waarde opgehaald die aangeeft of de service moet worden gewaarschuwd wanneer het systeem wordt afgesloten. |
| CanStop |
Hiermee wordt een waarde opgehaald die aangeeft of de service kan worden gestopt nadat deze is gestart. |
| Container |
Hiermee haalt u het IContainer bestand op dat de Component. (Overgenomen van Component) |
| DependentServices |
Hiermee haalt u de set services op die afhankelijk zijn van de service die aan dit ServiceController exemplaar is gekoppeld. |
| DesignMode |
Hiermee wordt een waarde opgehaald die aangeeft of de Component momenteel in de ontwerpmodus is. (Overgenomen van Component) |
| DisplayName |
Hiermee haalt u een beschrijvende naam voor de service op of stelt u deze in. |
| Events |
Hiermee haalt u de lijst met gebeurtenis-handlers op die aan dit Componentbestand zijn gekoppeld. (Overgenomen van Component) |
| MachineName |
Hiermee haalt u de naam op van de computer waarop deze service zich bevindt of stelt u deze in. |
| ServiceHandle |
Hiermee haalt u de ingang voor de service op. |
| ServiceName |
Hiermee haalt u de naam op die de service identificeert waarnaar deze instantie verwijst. |
| ServicesDependedOn |
De set services waarvan deze service afhankelijk is. |
| ServiceType |
Hiermee haalt u het type service op waarnaar dit object verwijst. |
| Site |
Haalt of stelt de ISite van de Component. (Overgenomen van Component) |
| StartType |
Hiermee wordt een waarde opgehaald die aangeeft hoe de service die wordt vertegenwoordigd door het ServiceController object wordt gestart. |
| Status |
Hiermee wordt de status opgehaald van de service waarnaar wordt verwezen door dit exemplaar. |
Methoden
| Name | Description |
|---|---|
| Close() |
Hiermee verbreekt u de ServiceController verbinding met de service en worden alle resources vrijgemaakt die door het toegewezen exemplaar zijn toegewezen. |
| Continue() |
Hiermee wordt een service voortgezet nadat deze is onderbroken. |
| CreateObjRef(Type) |
Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object. (Overgenomen van MarshalByRefObject) |
| Dispose() |
Alle resources die worden gebruikt door de Component. (Overgenomen van Component) |
| Dispose(Boolean) |
Publiceert de niet-beheerde resources die worden gebruikt door de ServiceController beheerde resources en brengt eventueel de beheerde resources vrij. |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| ExecuteCommand(Int32) |
Voert een aangepaste opdracht uit op de service. |
| GetDevices() |
Haalt de apparaatstuurprogrammaservices op de lokale computer op. |
| GetDevices(String) |
Haalt de apparaatstuurprogrammaservices op de opgegeven computer op. |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetLifetimeService() |
Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd. (Overgenomen van MarshalByRefObject) |
| GetService(Type) |
Hiermee wordt een object geretourneerd dat een service vertegenwoordigt die wordt geleverd door of door de Component service Container. (Overgenomen van Component) |
| GetServices() |
Hiermee worden alle services op de lokale computer opgehaald, met uitzondering van de apparaatstuurprogrammaservices. |
| GetServices(String) |
Hiermee worden alle services op de opgegeven computer opgehaald, met uitzondering van de apparaatstuurprogrammaservices. |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| InitializeLifetimeService() |
Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren. (Overgenomen van MarshalByRefObject) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| MemberwiseClone(Boolean) |
Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object. (Overgenomen van MarshalByRefObject) |
| Pause() |
Onderbreekt de werking van een service. |
| Refresh() |
Vernieuwt eigenschapswaarden door de eigenschappen opnieuw in te stellen op de huidige waarden. |
| Start() |
Hiermee start u de service en geeft u geen argumenten door. |
| Start(String[]) |
Hiermee start u een service, waarbij de opgegeven argumenten worden doorgegeven. |
| Stop() |
Hiermee stopt u deze service en alle services die afhankelijk zijn van deze service. |
| ToString() |
Retourneert een String met de naam van de Component, indien van toepassing. Deze methode mag niet worden overschreven. (Overgenomen van Component) |
| WaitForStatus(ServiceControllerStatus, TimeSpan) |
Wacht totdat de service de opgegeven status heeft bereikt of dat de opgegeven time-out is verlopen. |
| WaitForStatus(ServiceControllerStatus) |
Wacht oneindig totdat de service de opgegeven status heeft bereikt. |
gebeurtenis
| Name | Description |
|---|---|
| Disposed |
Treedt op wanneer het onderdeel wordt verwijderd door een aanroep naar de Dispose() methode. (Overgenomen van Component) |