Was ist svchost und warum laufen mehrere Instanzen davon?

27

Auf meinem Desktop werden sechs Instanzen ausgeführt, auf einem von mir verwalteten Server wahrscheinlich zehn. Was ist das und ist es wichtig für die Systemfunktion?

Jldugger
quelle
LOL. Ich habe 91 davon auf meinem Laptop!
Sen Jacob

Antworten:

16

svchost, hostet Dienste in Windows Siehe KB . Wenn Sie Process Explorer verwenden , können Sie sehen, welche Dienste in einem bestimmten Prozess ausgeführt werden.

Rob Haupt
quelle
1
Ist das also mehr oder weniger gleichbedeutend mit inetd unter Linux? Ein Allzweck-Server-Framework, mit dem Entwickler Dienste schreiben können, ohne sich um den Serverteil des Codes kümmern zu müssen?
Jason Tan
Dieselbe Idee, Jason, aber offensichtlich mit einer größeren Reichweite als inetd, die im Allgemeinen nur Aufgaben vom Typ Webbish unterstützt, nicht wahr? Eine schöne Analogie, sicherlich nahe genug, um Geld zu verdienen ...
Rob Moir
20

Viele ausführende Komponenten von Windows werden als Dienste implementiert (alle Dienste auf Ihrem Computer werden geöffnet Control Panel > Administrative Tools > Services). Hierbei handelt es sich um spezielle Programme, die im Hintergrund ausgeführt werden. Sie werden nicht vom angemeldeten Benutzer, sondern vom Betriebssystem selbst gestartet.

Die meisten Dienste sind keine eigenständigen ausführbaren Dateien (EXE-Dateien), sondern werden in Bibliotheken (DLLs) implementiert, die zum Ausführen von Prozessen verwendet werden können. Wie der Name schon sagt, ist Svchost oder "Service Host" die Standard-Programmdatei von Windows für die Ausführung dieser DLLs. Sie finden die Datei svchost.exe im %systemroot%\system32Verzeichnis.

Wenn Sie wissen möchten, welche Instanz von svchost welchen Dienst ausführt, geben Sie Folgendes ein

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

auf einer Befehlszeilenkonsole (cmd).

Auf dem Computer, auf dem ich den Screenshot erstellt habe, werden beispielsweise 21 verschiedene Dienste ausgeführt. Diese Gruppierung von Diensten ermöglicht laut Microsoft-Dokumentation eine bessere Kontrolle und ein einfacheres Debuggen .

Alt-Text

Svchost.exe-Gruppen werden im folgenden Registrierungsschlüssel identifiziert:

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost

Ein Tipp (unter Windows Vista, Windows 7 oder Windows Server 2008): Sie können den Task-Manager öffnen, mit der rechten Maustaste auf einen bestimmten Prozess in svchost.exe klicken und dann die Option "Zum Dienst wechseln" auswählen. Daraufhin wird die Registerkarte Dienste angezeigt, auf der alle Dienste svchost.exemarkiert sind, die unter dem ausgewählten Prozess ausgeführt werden.

Es gibt ein sehr interessantes Dokument im Microsoft Download Center:

Microsoft Windows Server 2003-Systemdienstreferenz

Dieses Dokument enthält eine Zusammenfassung aller für die Windows Server 2003-Betriebssystemfamilie verfügbaren Dienste. Die Dienste werden in alphabetischer Reihenfolge nach Anzeigenamen aufgelistet. Nach einer Beschreibung der einzelnen Dienste werden in einer Tabelle wichtige Informationen zu den Diensten aufgeführt.

Jeder Windows-Dienst wird mit allen Details aufgelistet. Sie erfahren beispielsweise, dass der Name der ausführbaren Datei des Terminaldienstediensts lautet

 svchost.exe -k termsvcs 
splattne
quelle
+1 danke für die Info ... du und dein 8000-Punkte-Repräsentant ... im Ernst, das ist eine großartige Ressource. Ich betrachte mich als versiert in Win CLI, war mir aber dessen nicht bewusst. Vielen Dank!
Cop1152
7

Svchost ist die Abkürzung für "Service Host". Die meisten Dienste auf Ihrem Computer werden weiterhin ausgeführt. Es gibt einige Dienste, die sich selbst in ihrer eigenen EXE-Datei hosten. Die meisten Windows-Dienste müssen jedoch in einem svchost.exe-Prozess gehostet werden. Die Dienste auf Ihrem Computer verwalten wichtige Dinge wie Netzwerk, RpC-Server, Audio, Ereignisprotokoll usw.

Geben Sie "services.msc" in Start-> Ausführen ein, um die Dienste anzuzeigen, die auf Ihrem Computer ausgeführt werden. Wenn Sie jemanden für unnötig halten, können Sie den Dienst beenden.

Geben Sie "tasklist / SVC" ein, um zu sehen, welche Dienste von den verschiedenen svchost.exe-Dateien gehostet werden.

Frode Lillerud
quelle
1

Hier ist ein PowerShell-Einzeiler, der alle in svchost.exe-Prozessen gehosteten Dienste ausgibt:

PS>get-process svchost | % {get-wmiobject win32_service -filter "processid=$($_.id)"} | format-table processid,name,displayname,state,status -auto

processid name          displayname                               state   status
--------- ----          -----------                               -----   ------
      316 HTTPFilter    HTTP SSL                                  Running OK
     1328 DcomLaunch    DCOM Server Process Launcher              Running OK
     1328 TermService   Terminal Services                         Running OK
     1392 RpcSs         Remote Procedure Call (RPC)               Running OK
     1528 AudioSrv      Windows Audio                             Running OK
     1528 BITS          Background Intelligent Transfer Service   Running OK
     1528 Browser       Computer Browser                          Running OK

Die kürzere Version eines Einzeilers sieht folgendermaßen aus:

gps svchost | % {gwmi win32_service -f "processid=$($_.id)"} | ft proc*,name,disp*,stat* -auto
Aleksandar
quelle