C# ile Windows Service Durumunu Öğrenmek Belirlemek
Geliştirmekte olduğumuz uygulamalarda ihtiyacımıza göre bazen Windows Service‘ni kullanıyoruz. Windows Service‘sine bağımlı uygulama geliştirdiğimiz zaman kullanmakta olduğumuz servisin durumunu bilmek kritik önem taşıyor. Kullandığımız Service, uygulamamızı destekleyen kendi geliştirdiğimiz bir servis olabileceği gibi, Windows ile gelen service‘lerde olabilir.
Service durumunu belirlemek için ServiceController sınıfını kullanmamız gerekmektedir. Bu sınıf System.ServiceProcess namespace’inde yer almaktadır. Bu sınıf Lokal bilgisayardaki veya Uzak bilgisayardaki bir Windows Service’sini temsil eder ve ilgili service’in sorgulanmasına,özelliklerinin değiştirilmesine izin veriri.
ServiceController sınıfını kullanabilmek için,projemize System.ServiceProcess.dll dosyasını referans göstermeliyiz.
Not: Servis durumunu sorgulayacak uygulamayı çalıştıracak kullanıcının gerekli yetkilerinin olması gerekmektedir. Aksi durumda uygulama hata verecektir.
[csharp]
//Yerel bilgisayarımdaki servis durumunu sorgulamak için.
Console.WriteLine("———–Local Bilgisayarın Servis Durumu ————");
ServiceController scLocal = new ServiceController("SQLWriter");
if(scLocal.Status==ServiceControllerStatus.Running)
Console.WriteLine("SQLWriter Servisi çalışıyor…");
Console.WriteLine();
Console.WriteLine("————–Uzak Bilgisayarın Servis Durumu ————");
//Uzaktaki bir bilgisayarın servisini sorgulamak için;
ServiceController scRemote = new ServiceController("SQLSERVERAGENT", "UzakPCAdi");
switch (scRemote.Status)
{
case ServiceControllerStatus.ContinuePending:
Console.WriteLine("Servis durdurulmuş. Başlatılıyor.");
break;
case ServiceControllerStatus.PausePending:
Console.WriteLine("Servis durduruluyor…");
break;
case ServiceControllerStatus.Paused:
Console.WriteLine("Servis durdurulmuş");
break;
case ServiceControllerStatus.Running:
Console.WriteLine("Servis çalışıyor.");
break;
case ServiceControllerStatus.StartPending:
Console.WriteLine("Servis başlatılıyor.");
break;
case ServiceControllerStatus.StopPending:
Console.WriteLine("Servis durduruluyor..");
break;
case ServiceControllerStatus.Stopped:
Console.WriteLine("Servis çalışmıyor.");
break;
default:
break;
}
[/csharp]