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]

windows_servies

Mesut Güneş

Selçuk Üniversitesi Bilgisayar programcılığı bölümünden mezun olduktan sonra birçok firmada Yazılım, İş zekası ve Veritabanı Uzmanı olarak çalıştım. Şuan Türkiye’nin en büyük şirketlerinden biri olan Doğan Online’da Veritabanı Yöneticisi olarak çalışıyorum.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.