Co to jest svchost i dlaczego działa wiele jego instancji?

27

Na moim pulpicie działa sześć instancji i prawdopodobnie dziesięć na serwerze, którym zarządzam. Co to jest i czy jest niezbędne do funkcjonowania systemu?

jldugger
źródło
LOL. Mam 91 z nich w moim laptopie!
Sen Jacob

Odpowiedzi:

16

svchost, hostuje usługi w Windows Zobacz KB . Jeśli korzystasz z Process Explorer , możesz zobaczyć, które usługi są uruchamiane w ramach danego procesu.

Rob Haupt
źródło
1
Czy to mniej więcej odpowiada inetd pod Linuksem? Ogólny szkielet serwera, dzięki czemu programiści mogą pisać usługi bez obawy o część kodu serwera?
Jason Tan
Taki sam pomysł, Jason, ale oczywiście z większym zasięgiem niż inetd, który zasadniczo wspiera tylko zadania typu webbish, prawda? Ładna analogia, na pewno wystarczająco blisko, by gotówka ...
Rob Moir
20

Wiele wykonujących się składników systemu Windows jest zaimplementowanych jako usługi (zobacz wszystkie usługi podczas otwierania komputera Control Panel > Administrative Tools > Services). Są to specjalistyczne programy działające w tle. Nie są uruchamiane przez zalogowanego użytkownika, ale przez sam system operacyjny.

Większość usług nie jest samodzielnymi plikami wykonywalnymi (plikami EXE), ale jest zaimplementowana w bibliotekach (DLL), z których mogą korzystać uruchomione procesy. Jak sama nazwa wskazuje, Svchost lub „Service Host” to standardowy plik wykonywalny systemu Windows do uruchamiania tych bibliotek DLL. Plik svchost.exe można znaleźć w %systemroot%\system32katalogu.

Jeśli chcesz wiedzieć, która instancja svchost wykonuje jaką usługę, wpisz

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

na konsoli wiersza polecenia (cmd).

Na komputerze, na którym wykonałem zrzut ekranu, na przykład w jednym z instancji svchost działa 21 różnych usług. To grupowanie usług pozwala na lepszą kontrolę i łatwiejsze debugowanie, zgodnie z dokumentacją Microsoft .

alternatywny tekst

Grupy Svchost.exe są identyfikowane w następującym kluczu rejestru:

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost

Wskazówka (jeśli korzystasz z systemu Windows Vista, Windows 7 lub Windows Server 2008): możesz otworzyć Menedżera zadań i kliknąć prawym przyciskiem myszy konkretny proces svchost.exe, a następnie wybrać opcję „Przejdź do usługi”. Spowoduje to wyświetlenie karty Usługi , gdzie wszystkie usługi uruchomione w ramach wybranego svchost.exeprocesu zostaną oznaczone.

W Centrum pobierania Microsoft jest bardzo interesujący dokument:

Microsoft Windows Server 2003 System Services Reference

Ten dokument zawiera podsumowanie wszystkich usług dostępnych dla rodziny systemów operacyjnych Windows Server 2003. Usługi są wymienione w kolejności alfabetycznej według wyświetlanej nazwy. Po opisie każdej usługi tabela zawiera kluczowe informacje o usłudze.

Każda usługa Windows jest wymieniona ze wszystkimi szczegółami. Dowiesz się na przykład, że nazwa pliku wykonywalnego usługi usług terminalowych to

 svchost.exe -k termsvcs 
splattne
źródło
+1 dzięki za informację ... ty i twój przedstawiciel z 8000 punktów ... poważnie, to świetny zasób. Uważam się za dobrze zaznajomionego z Win CLI, ale nie byłem tego świadomy. Dzięki!
cop1152
7

Svchost to skrót od „Service Host”. Utrzymuje działanie większości usług na twoim komputerze. Będzie kilka Usług hostujących się we własnym pliku .exe, ale większość Usług Windows musi być hostowana w procesie svchost.exe. Usługi na twoim komputerze obsługują ważne rzeczy, takie jak sieć, serwer RpC, audio, dziennik zdarzeń itp.

Wpisz „services.msc” w Start-> Uruchom, aby wyświetlić usługi uruchomione na komputerze. Jeśli uważasz, że ktoś jest niepotrzebny, możesz zatrzymać usługę.

Wpisz „tasklist / SVC”, aby zobaczyć, które usługi są hostowane przez różne pliki svchost.exe.

Frode Lillerud
źródło
1

Oto jedno-liniowy program PowerShell, który wysyła wszystkie usługi hostowane w procesach svchost.exe:

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

Krótsza wersja jedno-liniowej wygląda następująco:

gps svchost | % {gwmi win32_service -f "processid=$($_.id)"} | ft proc*,name,disp*,stat* -auto
aleksandar
źródło