ServiceController Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente un service Windows et vous permet de vous connecter à un service en cours d’exécution ou arrêté, de le manipuler ou d’obtenir des informations sur celui-ci.
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
- Héritage
- Héritage
-
ServiceController
- Attributs
- Implémente
Exemples
L’exemple suivant illustre l’utilisation de la ServiceController classe pour contrôler l’exemple de SimpleService service.
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
Remarques
Vous pouvez utiliser la ServiceController classe pour vous connecter et contrôler le comportement des services existants. Lorsque vous créez une instance de la ServiceController classe, vous définissez ses propriétés afin qu’elle interagit avec un service Windows spécifique. Vous pouvez ensuite utiliser la classe pour démarrer, arrêter et manipuler le service.
Vous utiliserez probablement le ServiceController composant dans une capacité d’administration. Par exemple, vous pouvez créer une application Windows ou Web qui envoie des commandes personnalisées à un service via l’instance ServiceController . Cela serait utile, car le composant logiciel enfichable SCM (Service Control Manager) Microsoft Management Console ne prend pas en charge les commandes personnalisées.
Après avoir créé une instance de , vous devez définir deux propriétés sur celle-ci pour identifier le service avec lequel il interagit : le nom de ServiceControllerl’ordinateur et le nom du service que vous souhaitez contrôler.
Note
Par défaut, MachineName est défini sur l’ordinateur local. Vous n’avez donc pas besoin de le modifier, sauf si vous souhaitez définir l’instance pour qu’elle pointe vers un autre ordinateur.
En règle générale, l’auteur du service écrit du code qui personnalise l’action associée à une commande spécifique. Par exemple, un service peut contenir du code pour répondre à une ServiceBase.OnPause commande. Dans ce cas, le traitement personnalisé de la Pause tâche s’exécute avant que le système suspend le service.
L’ensemble de commandes qu’un service peut traiter dépend de ses propriétés ; par exemple, vous pouvez définir la CanStop propriété d’un service sur false. Ce paramètre restitue la Stop commande non disponible sur ce service particulier ; il vous empêche d’arrêter le service du SCM en désactivant le bouton nécessaire. Si vous essayez d’arrêter le service de votre code, le système génère une erreur et affiche le message d’erreur « Échec de l’arrêt servicename».
Constructeurs
| Nom | Description |
|---|---|
| ServiceController() |
Initialise une nouvelle instance de la ServiceController classe qui n’est pas associée à un service spécifique. |
| ServiceController(String, String) |
Initialise une nouvelle instance de la ServiceController classe associée à un service existant sur l’ordinateur spécifié. |
| ServiceController(String) |
Initialise une nouvelle instance de la ServiceController classe associée à un service existant sur l’ordinateur local. |
Propriétés
| Nom | Description |
|---|---|
| CanPauseAndContinue |
Obtient une valeur indiquant si le service peut être suspendu et repris. |
| CanRaiseEvents |
Obtient une valeur indiquant si le composant peut déclencher un événement. (Hérité de Component) |
| CanShutdown |
Obtient une valeur indiquant si le service doit être averti lorsque le système s’arrête. |
| CanStop |
Obtient une valeur indiquant si le service peut être arrêté après son démarrage. |
| Container |
Obtient le IContainer fichier qui contient le Component. (Hérité de Component) |
| DependentServices |
Obtient l’ensemble des services qui dépendent du service associé à cette ServiceController instance. |
| DesignMode |
Obtient une valeur qui indique si la Component valeur est actuellement en mode création. (Hérité de Component) |
| DisplayName |
Obtient ou définit un nom convivial pour le service. |
| Events |
Obtient la liste des gestionnaires d’événements qui sont attachés à ce Component. (Hérité de Component) |
| MachineName |
Obtient ou définit le nom de l’ordinateur sur lequel réside ce service. |
| ServiceHandle |
Obtient le handle du service. |
| ServiceName |
Obtient ou définit le nom qui identifie le service référencé par cette instance. |
| ServicesDependedOn |
Ensemble de services dont dépend ce service. |
| ServiceType |
Obtient le type de service référencé par cet objet. |
| Site |
Obtient ou définit le ISiteComponent. (Hérité de Component) |
| StartType |
Obtient une valeur qui indique comment le service représenté par l’objet ServiceController démarre. |
| Status |
Obtient l’état du service référencé par cette instance. |
Méthodes
| Nom | Description |
|---|---|
| Close() |
Déconnecte cette ServiceController instance du service et libère toutes les ressources allouées par l’instance. |
| Continue() |
Poursuit un service une fois qu’il a été suspendu. |
| CreateObjRef(Type) |
Crée un objet qui contient toutes les informations pertinentes requises pour générer un proxy utilisé pour communiquer avec un objet distant. (Hérité de MarshalByRefObject) |
| Dispose() |
Effectue des tâches définies par l’application associées à la libération, à la libération ou à la réinitialisation des ressources non managées. |
| Dispose() |
Libère toutes les ressources utilisées par le Component. (Hérité de Component) |
| Dispose(Boolean) |
Libère les ressources non managées utilisées par les ServiceController ressources gérées et libère éventuellement les ressources managées. |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| ExecuteCommand(Int32) |
Exécute une commande personnalisée sur le service. |
| GetDevices() |
Récupère les services de pilote de périphérique sur l’ordinateur local. |
| GetDevices(String) |
Récupère les services de pilote de périphérique sur l’ordinateur spécifié. |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetLifetimeService() |
Obsolète.
Récupère l’objet de service de durée de vie actuel qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject) |
| GetService(Type) |
Retourne un objet qui représente un service fourni par le Component ou par son Container. (Hérité de Component) |
| GetServices() |
Récupère tous les services sur l’ordinateur local, à l’exception des services de pilote de périphérique. |
| GetServices(String) |
Récupère tous les services sur l’ordinateur spécifié, à l’exception des services de pilote de périphérique. |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| InitializeLifetimeService() |
Obsolète.
Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| MemberwiseClone(Boolean) |
Crée une copie superficielle de l’objet actuel MarshalByRefObject . (Hérité de MarshalByRefObject) |
| Pause() |
Suspend l’opération d’un service. |
| Refresh() |
Actualise les valeurs des propriétés en réinitialisant les propriétés à leurs valeurs actuelles. |
| Start() |
Démarre le service, en passant aucun argument. |
| Start(String[]) |
Démarre un service, en passant les arguments spécifiés. |
| Stop() |
Arrête ce service et tous les services qui dépendent de ce service. |
| Stop(Boolean) |
Arrête le service et éventuellement tous les services qui dépendent de ce service. |
| ToString() |
Retourne un String nom contenant le nom du Component, le cas échéant. Cette méthode ne doit pas être remplacée. (Hérité de Component) |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
| WaitForStatus(ServiceControllerStatus, TimeSpan) |
Attend que le service atteigne l’état spécifié ou que le délai d’expiration spécifié expire. |
| WaitForStatus(ServiceControllerStatus) |
Attend infiniment que le service atteigne l’état spécifié. |
Événements
| Nom | Description |
|---|---|
| Disposed |
Se produit lorsque le composant est supprimé par un appel à la Dispose() méthode. (Hérité de Component) |