Area di riferimento
- Implementing service processes, threading, and application domains in a .NET Framework application
- Implement, install, and control a service
- ServiceController class and ServiceControllerPermission class
Controllare i servizi di Windows
La classe ServiceController permette di connettersi a un servizio sul computer locale o su un computer remoto, esaminare le capacità del servizio, avviarlo fermarlo e così via. Affinchè un processo possa effettuare questa operazione deve avere le opportune autorizzazioni. Per richiedere l'autorizzazione si utilizza la classe ServiceControllerPermission.
Ecco un esempio che mostra come connettersi al servizio di nome "MioServizio" presente sulla macchina locale. L'esempio dopo aver visualizzato lo stato del servizio si comporta come segue:
- Se il servizio è fermo lo avvia
- Se il servizio è in esecuzione lo ferma
- Se il servizio è in pausa lo rimette in esecuzione
static void Main(string[] args)
{
string nomeServizio = "MioServizio";
// Costruisco un oggetto ServiceController per gestire il mio servizio
ServiceController sc = new ServiceController(nomeServizio);
// Visualizzo informazioni sullo stato del servizio
Console.WriteLine("Il servizio {0} al momento è nello stato {1}", nomeServizio, sc.Status);
// Avvio o fermo il servizio in base al suo stato
if (sc.Status == ServiceControllerStatus.Running)
{
sc.Stop();
Console.WriteLine("Servizio fermato");
}
else if (sc.Status == ServiceControllerStatus.Stopped)
{
sc.Start();
Console.WriteLine("Servizio avviato");
}
else if (sc.Status == ServiceControllerStatus.Paused)
{
sc.Continue();
Console.WriteLine("Servizio ripristinato");
}
Console.ReadKey();
}