Svchost.exe Nedir ve Neden Çalışır?



Ekleyen
obahadir
Güncelleme Zamanı
12.09.2009

Bu makaleyi okuyorsunuz çünkü "svchost.exe" adıyla çalışan bir düzineye yakın işlemin ne olduğunu ya da neye yaradığını siz de merak ediyorsunuz. Bu işlemleri sonlandıramıyor ve başlatmayı bile hatırlayamıyorsunuz. Peki "svchost.exe" adlı bu işlemler ne ve neye yarıyor?

Nedir bu "Svchost.exe"?

Microsoft'a göre "svchost.exe, dinamik bağlı kitaplıklardan çalışan hizmetlere verilen genel bir sunucu işlemi adı." Peki bunun Türkçe tercümesini yapabilecek olan var mı?

Bir süre önce Microsoft, tüm işlevselliği dâhili Windows hizmetlerinden ".EXE" yerine ".DLL" dosyalarına taşıdı. Bir programlama perspektifinden olaya bakıldığında, yeniden kullanım için bu tabi ki mantıklı bir anlam içeriyor. Fakat sorun, bir .DLL dosyasını Windows'tan direk olarak çalıştıramıyor olmanız. Bu .DLL dosyasının çalışmakta olan yürütülebilir .EXE (executable) dosyalarından yüklenmesi gerekiyor. Bu yüzden svchost.exe işlemi doğmuş.

Neden, Çok Fazla "svchost.exe" İşlemi Birden Çalışıyor?

Eğer daha önce Denetim Masası'ndan (Control Panel) Hizmetler (Services) bölümüne baktıysanız, Windows tarafından gerek duyulan birçok hizmet olduğunu görmüşsünüzdür. Eğer her bir hizmet, tek bir "svchost.exe" örneğinin altında çalışsaydı, bu hizmetlerden birinde gerçekleşecek başarısızlık ya da herhangi bir hata tüm Windows'u çökertebilirdi. Bu yüzden svchost.exe işlemleri birbirlerinden ayrılmış.

Bu hizmetler, mantıklı gruplar halinde düzenleniyor ve daha sonra her bir grup için tek bir svchost.exe örneği yaratılıyor. Örneğin, tek bir svchost.exe, güvenlik duvarıyla (Firewall) ile ilgili üç hizmeti birden çalıştırır. Verilebilecek diğer bir örnek ise bir başka svchost.exe örneğinin ara birimle ilgili tüm hizmetleri çalıştırıyor olması. Bu örnekler arttırılabilir.

Peki Bununla İlgili Ben Ne Yapabilirim?

Gerçekten çalışması gerekmeyen hizmetleri devre dışı bırakarak ya da durdurarak gereksiz hizmetleri kırpabilirsiniz. Ek olarak, eğer tek bir svchost.exe örneği için işlemcinin çok aşırı biçimde kullanıldığını hissediyorsanız, bu örnek altında çalışan hizmetleri yeniden başlatabilirsiniz.

En büyük problem ise, belli bir svchost.exe örneğinin altıdan hangi hizmetlerin çalıştığının anlaşılabilmesi kısmında yaşanacaktır. Bunu nasıl yapacağınızı aşağıda açıklayacağız.

Eğer bahsettiğimiz şeyin ne olduğunu merak ediyorsanız sadece Görev Yöneticisi'ni (TaskManager) açın ve"Tümkullanıcıların işlemlerini göster" (Show processes from all users) kutusunu işaretleyin:

Komut Satırından Kontrol Etmek (Vista ya da XP Pro)

Belli bir svchost.exe örneğinin altında hangi hizmetlerin çalıştığını görmek istiyorsanız, bu hizmetlerin listesini görmek için komut istemcisinden "Görev Listesi" (Tasklist) komutunu kullanabilirsiniz.

tasklist /SVC

Komut satırı yöntemini kullanma ile ilgili sorun ise, bu şifreli ve gizemli yazıların ne anlama geldiğini ister istemez bilemeyecek olmanızdan kaynaklanacaktır.

Vista'daki Görev Yöneticisi 'nden (Task Manager) Kontrol Etmek

Belli bir svchost.exe işlemine sağ tıkladıktan sonra "Hizmete Git" (Go To Service) seçeneğini seçin.

Bunuyaptıktansonrakarşınıza aşağıdaki resimdeki gibi sekmeli bir Hizmetler (Services) menüsü çıkacaktır. Bu sekmede, o svchost.exe örneğinin altında çalışan tüm hizmetler seçili gelecektir:

Bu yöntemi seçmenin güzelliği, Açıklama (Description) sütununda gerçek ismi görebilecek olmanız. Bu sayede çalışmasını istemezseniz, hizmeti devre dışı bırakabiliyorsunuz.

İşlem Gezgini (Process Explorer) Kullanmak

Microsoft/Sysinternals'ten mükemmel İşlem Gezgini (Process Explorer) hizmet programını kullanarak bir svchost.exe işleminin bir parçası olarak hangi hizmetlerin çalışmakta olduğunu görebilirsiniz.

Bu işlemlerden birinin üstüne farenizi götürdüğünüzde, tüm hizmetlerin bir açılır menü listesi ortaya çıkacak:

Ya da bir svchost.exe örneğine iki kez tıklayarak Hizmetler (Services) sekmesini seçebilirsiniz. Bu sekmede seçtiğiniz bir hizmetin çalışmasını durdurabilirsiniz.

Hizmetleri Devre Dışı Bırakma

Denetim Masası'ndan Yönetimsel Araçlar (Administrative Tools) bölümünü seçerek ya da Başlat (Start) menüsünün "Arama" ya da "Çalıştır" alanına services.msc yazarak Hizmetler'i (services) açın.

Devre dışı bırakmak istediğiniz hizmeti, listeden bulun ve ya bu hizmete çift tıklayın ya da sağ tıklayarak "Özellikler"i (Properties) seçin.

"Başlatma" (Startup) tipini "Devre dışı" (Disabled) olarak değiştirin ve daha sonra hemen durdurmak için "Durdur" (Stop) butonuna basın.

Seçtiğiniz bir hizmeti devre dışı bırakmak için ayrıca komut istemini (Command prompt) kullanabilirsiniz. Bu komutu uygulayabilmek için işlem yapmak istediğiniz Hizmet'in (Service) adını bilmeniz gerekiyor. Yazının başındaki "Görev listesi komutu"na (Tasklist command) bakararak servisin adını bulabilirsiniz. Kullanım şu şekilde:

Sc config trkwks start = (disabled)

Yine de hizmetleri kapatırken veya durdururken dikkatli olun ve durdurmak istediğiniz hizmetin ne işe yaradığından emin olun. Zira gerekli bir hizmeti sonlandırırsanız sisteminize zarar verebilirsiniz.