Merhaba. Bu konuda C# kodlama dili ile nasıl bir Windows Hizmeti yapacağımızı göstereceğim. Hemen başlayalım.
Windows Hizmeti Nedir?
Windows NT sistemlerinde, Windows Hizmeti bilgisayarın arkasında çalışan bir program türüdür. Hizmetler, genelde güncelleme, antivirüs vb. programlarda kullanılır. Hizmetler, Session 0 adı verilen oturumda çalışırlar ve kullanıcı olarak genelde SYSTEM kullanıcısında çalışmaktadırlar. Windows XP'de Hizmetler kullanıcı ile etkileşime geçebiliyordu fakat Windows Vista'da etkileşimli hizmetler kaldırıldı. Hizmetler, normal programlardan daha farklı kodlanır.
Kullanım Alanları Nelerdir?
Bir programın güncelleme sistemi,
Antivirüs ve güvenlik duvarı yazılımları,
Cihaz sürücü yazılımları vb.
Hizmetler Kötü Amaçlar için Kullanılabilir Mi?
Evet, kötü amaçlı yazılımlar silinmeyi zorlaştırmak ve daha gizli bir şekilde çalışmak için kendilerini Windows Hizmeti olarak yükleyebilirler.
1. ADIM
İlk önce bir Windows Service (.NET Framework) projesi oluşturuyoruz.
2. ADIM
Proje oluşturulduktan sonra açılan ekranda, switch to code view linkine basıyoruz. Bu linke bastıktan sonra projemizin kod kısmına girmiş oluyoruz.
Kod kısmına girdiğimizde iki adet void ile karşılaşıyoruz.
Bu void'e eklediğimiz kodlar, hizmetimiz başladığında otomatik olarak çalışacaktır. İsterseniz bir Timer ekleyip onu başlatabilir yada bir void oluşturup ona yönlendirebilirsiniz.
Bu void'e eklediğimiz kodlar, hizmetimiz durdurulduğunda çalışır.
3. ADIM
Şimdi örnek bir Hizmet kodlayacağım. Benim hizmetim masaüstü klasöründe Test.txt dosyasının olup olmadığını kontrol edecek. Eğer dosya yoksa oluşturacak. Bu işlem için bir Timer kullanacağım.
Timer'ı kullanabilmek için kodun başına şunu ekliyoruz:
Timer'ı ayarlamak için kullandığım kod:
Hizmet başlatıldığında çalışacak kod:
Hizmet durdurulduğunda çalışacak kod:
Timer kodu:
Kodun Tamamı:
4. ADIM
Şimdi hizmetimizi oluşturup exe dosyamızı alıyoruz. Hizmet exe dosyası doğrudan çalıştırılamaz. SC aracını kullanarak hizmeti sisteme yüklememiz gerekiyor. Ben bir CMD dosyası kullanacağım. Kullandığım CMD dosyası:
NOT: Bir hizmeti yükleme işlemi yönetimsel erişim gerektirir.
Hizmet sisteme yüklendikten sonra services.msc ve msconfig üzerinden kontrol ediyorum.
5. ADIM
Şimdi ise hizmeti nasıl sistemden kaldıracağımızı göstereceğim. Hizmeti silmek için bir CMD dosyası kullanacağım.
NOT: Bir hizmeti kaldırma işlemi yönetimsel erişim gerektirir.
Okuduğunuz için teşekkür ederim.
Windows Hizmeti Nedir?
Windows NT sistemlerinde, Windows Hizmeti bilgisayarın arkasında çalışan bir program türüdür. Hizmetler, genelde güncelleme, antivirüs vb. programlarda kullanılır. Hizmetler, Session 0 adı verilen oturumda çalışırlar ve kullanıcı olarak genelde SYSTEM kullanıcısında çalışmaktadırlar. Windows XP'de Hizmetler kullanıcı ile etkileşime geçebiliyordu fakat Windows Vista'da etkileşimli hizmetler kaldırıldı. Hizmetler, normal programlardan daha farklı kodlanır.
Kullanım Alanları Nelerdir?
Bir programın güncelleme sistemi,
Antivirüs ve güvenlik duvarı yazılımları,
Cihaz sürücü yazılımları vb.
Hizmetler Kötü Amaçlar için Kullanılabilir Mi?
Evet, kötü amaçlı yazılımlar silinmeyi zorlaştırmak ve daha gizli bir şekilde çalışmak için kendilerini Windows Hizmeti olarak yükleyebilirler.
1. ADIM
İlk önce bir Windows Service (.NET Framework) projesi oluşturuyoruz.
2. ADIM
Proje oluşturulduktan sonra açılan ekranda, switch to code view linkine basıyoruz. Bu linke bastıktan sonra projemizin kod kısmına girmiş oluyoruz.
Kod kısmına girdiğimizde iki adet void ile karşılaşıyoruz.
C#:
protected override void OnStart(string[] args)
{
}
Bu void'e eklediğimiz kodlar, hizmetimiz başladığında otomatik olarak çalışacaktır. İsterseniz bir Timer ekleyip onu başlatabilir yada bir void oluşturup ona yönlendirebilirsiniz.
C#:
protected override void OnStop()
{
}
Bu void'e eklediğimiz kodlar, hizmetimiz durdurulduğunda çalışır.
3. ADIM
Şimdi örnek bir Hizmet kodlayacağım. Benim hizmetim masaüstü klasöründe Test.txt dosyasının olup olmadığını kontrol edecek. Eğer dosya yoksa oluşturacak. Bu işlem için bir Timer kullanacağım.
Timer'ı kullanabilmek için kodun başına şunu ekliyoruz:
C#:
using System.Timers;
Timer'ı ayarlamak için kullandığım kod:
C#:
Timer timer1 = new Timer();
timer1.Interval = 1000;
timer1.Elapsed += Timer1_Elapsed;
timer1.Start();
Hizmet başlatıldığında çalışacak kod:
Hizmet durdurulduğunda çalışacak kod:
Timer kodu:
C#:
private void Timer1_Elapsed(object sender, ElapsedEventArgs e)
{
if (System.IO.File.Exists(@"C:\Users\Emir\Desktop\Test.txt") != true)
{
System.IO.File.Create(@"C:\Users\Emir\Desktop\Test.txt");
}
}
Kodun Tamamı:
C#:
using System;
using System.Timers;
using System.ServiceProcess;
namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
Timer timer1 = new Timer();
timer1.Interval = 1000;
timer1.Elapsed += Timer1_Elapsed;
timer1.Start();
}
protected override void OnStart(string[] args)
{
}
protected override void OnStop()
{
}
private void Timer1_Elapsed(object sender, ElapsedEventArgs e)
{
if (System.IO.File.Exists(@"C:\Users\Emir\Desktop\Test.txt") != true)
{
System.IO.File.Create(@"C:\Users\Emir\Desktop\Test.txt");
}
}
}
}
4. ADIM
Şimdi hizmetimizi oluşturup exe dosyamızı alıyoruz. Hizmet exe dosyası doğrudan çalıştırılamaz. SC aracını kullanarak hizmeti sisteme yüklememiz gerekiyor. Ben bir CMD dosyası kullanacağım. Kullandığım CMD dosyası:
Kod:
@echo off
sc create "hizmet" binPath= "hizmet exe konumu" start= auto
net start hizmet
NOT: Bir hizmeti yükleme işlemi yönetimsel erişim gerektirir.
Hizmet sisteme yüklendikten sonra services.msc ve msconfig üzerinden kontrol ediyorum.
5. ADIM
Şimdi ise hizmeti nasıl sistemden kaldıracağımızı göstereceğim. Hizmeti silmek için bir CMD dosyası kullanacağım.
Kod:
@echo off
net stop hizmet
sc delete hizmet
NOT: Bir hizmeti kaldırma işlemi yönetimsel erişim gerektirir.
Okuduğunuz için teşekkür ederim.
Son düzenleme:


