Svchost.exe – Probleme finden


    Tags: ,

    Der Windows-Remoteverwaltungsdienst (WinRM)Es ist Richtlinie bei Microsoft, dass interne Windows-Funktionen möglichst komplett in DLLs vorliegen sollen statt als EXE-Dateien, um eine optimale Wiederverwendbarkeit durch andere Programme zu ermöglichen. Will man diese Funktionen direkt ausführen, benötigt man die Hilfe eines Host-Prozesses, da man DLLs nicht direkt starten kann. Aus Benutzersicht ist dies rundll32.exe, für Windows-Dienste erfüllt svchost.exe die entsprechende Funktion. Auch diese liegen überwiegend in Form von DLLs vor; svchost.exe ist der Host-Prozess, mit dessen Hilfe sie ausgeführt werden.

    Welcher Dienst startet mit welcher svchost.exe-Instanz?

    Sysinternals’ Process Explorer zeigt die gestarteten Dienste jeder svchost.exe-InstanzWie man mit Windows’ Task-Manager sieht, laufen stets mehrere Instanzen von svchost.exe. Eine Instanz kann mehrere Dienste beinhalten, muss dies aber nicht. Der Task-Manager zeigt indirekt, welche Dienste jeweils unter einer svchost.exe-Instanz zusammengefasst sind: Auf der Registerkarte Dienste klickt man dazu auf die Spalte PID, um sie nach Prozesskennung zu sortieren. Alle Dienste, die unter gleicher PID laufen, teilen eine Instanz von svchost.exe. Auf der Kommandozeile erhält man die Information mittels des Befehls

    tasklist /svc /fi "imagename eq svchost.exe"

    Sysinternals’ Process Explorer zeigt nach einem Doppelklick auf einen svchost.exe-Prozess auf der Registerkarte Services, welche Dienste er beherbergt und zeigt deren Beschreibung an. Noch detaillierter und speziell auf Dienste ausgerichtet ist der Svchost Viewer von Microsofts Open-Source-Hosting-Seite Codeplex.

    Instanzen von svchost.exe konfigurieren

    Will man zur Fehlersuche oder aus anderen Gründen die Gruppierung der Dienste unter den einzelnen svchost.exe-Instanzen ändern, gibt es dazu 2 Möglichkeiten, die beide einen Eingriff in die Registry beinhalten und jeweils einen Neustart des Systems erfordern.

    Die Konfiguration der Gruppen findet man unter HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost, wo die einzelnen Dienste jeweils als mehrzeilige Listen vom Typ REG_MULTI_SZ unter einer Gruppe eingetragen sind. Hier kann man etwa Dienste von einer in die andere Gruppe verschieben.

    Eine Dienste-Instanz zu vereinzeln, ihr also einen exklusiven svchost.exe-Prozess zu spendieren, könnte man hier durch Einrichtung einer separaten Gruppe erreichen, muss jedoch darauf achten, auch noch Unterschlüssel mit dem neuen Gruppennamen zu erstellen, in denen die Start-Parameter für diese svchost.exe-Instanz festgelegt werden. Prinzipiell ist das möglich – man kann etwa die Parameter der Gruppe kopieren, aus welcher der zu vereinzelnde Dienst stammt.

    Einfacher geht es in der Dienste-Konfiguration selbst unter HKLM\SYSTEM\CurrentControlSet\services. Jeder Dienste-Unterschlüssel hat besitzt hier einen DWORD-Eintrag namens Type. Ändert man dessen Wert von 20(hex) auf 10(hex), erhält er beim nächsten Start eine eigene Instanz von svchost.exe, egal was die obige Gruppen-Konfiguration für svchost.exe selbst besagt. Indem man den Wert wiederum auf 20(hex) setzt, nimmt man diese Änderung zurück.

    Man sollte dies jedoch für Dienste vermeiden, die von vornherein in der Voreinstellung mittels dieses Wertes als Einzel-Instanz konfiguriert wurden – ihnen fehlt die notwendige Gruppen-Konfiguration.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Andreas Kroschel
    Andreas Kroschel ist Buchautor und Verfasser von Fachartikeln zu Hardware, Windows und Linux sowie IT-Sicherheit. Er arbeitete als Redakteur unter anderem für BYTE Deutschland und die PC-Welt.

    Verwandte Beiträge

    Weitere Links