Что такое svchost и почему работает несколько его экземпляров?

27

На моем рабочем столе работает шесть экземпляров, и, вероятно, десять на сервере, которым я управляю. Что это такое, и важно ли это для функционирования системы?

jldugger
источник
СМЕШНО. У меня 91 из них работает на моем ноутбуке!
Сен Джейкоб

Ответы:

16

svchost, размещает службы в Windows См. КБ . Если вы используете Process Explorer, вы можете увидеть, какие службы запускаются внутри определенного процесса.

Роб Хаупт
источник
1
Так это более или менее эквивалентно inetd под Linux? Серверная среда общего назначения, чтобы разработчики могли писать сервисы, не беспокоясь о серверной части кода?
Джейсон Тан
Идея такого же рода, Джейсон, но, очевидно, с большим диапазоном, чем inetd, который обычно поддерживает только задачи типа webbish, не так ли? Хорошая аналогия, хотя, конечно, достаточно близко для денег ...
Роб Мойр
20

Многие исполняющие компоненты Windows реализованы в виде сервисов (все сервисы на вашем компьютере открываются Control Panel > Administrative Tools > Services). Это специализированные программы, работающие в фоновом режиме. Они запускаются не вошедшим в систему пользователем, а самой операционной системой.

Большинство сервисов не являются автономными исполняемыми файлами (EXE-файлами), но реализованы в библиотеках (DLL), которые могут использоваться запущенными процессами. Как следует из названия, Svchost или «Service Host» является стандартным исполняемым файлом Windows для запуска этих DLL. Вы можете найти файл svchost.exe в %systemroot%\system32каталоге.

Если вы хотите узнать, какой экземпляр svchost выполняет какую службу, введите

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

в консоли командной строки (cmd).

На машине, где я сделал скриншот, один из экземпляров svchost работает, например, с 21 сервисом. В соответствии с документацией Microsoft эта группировка сервисов обеспечивает лучший контроль и упрощает отладку .

альтернативный текст

Группы Svchost.exe определены в следующем разделе реестра:

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost

Совет (если вы используете Windows Vista, Windows 7 или Windows Server 2008): вы можете открыть диспетчер задач и щелкнуть правой кнопкой мыши по конкретному процессу svchost.exe, а затем выбрать вариант «Перейти к службе». Это покажет услуги вкладку, где все службы , работающие под выбранным svchost.exeбудет отмечена процессом.

В Центре загрузок Microsoft есть очень интересный документ:

Справочник по системным службам Microsoft Windows Server 2003

Этот документ содержит сводку всех служб, доступных для семейства операционных систем Windows Server 2003. Услуги перечислены в алфавитном порядке по отображаемому имени. После описания каждой услуги в таблице приведены ключевые сведения об услуге.

Каждая служба Windows перечислена со всеми ее деталями. Вы узнаете, например, что имя исполняемого файла службы терминалов

 svchost.exe -k termsvcs 
splattne
источник
+1 спасибо за информацию .... вы и ваш 8000 очков репутации ... серьезно, хотя, это отличный ресурс, чтобы иметь. Я считаю себя хорошо разбирающимся в Win CLI, но не знал об этом. Благодарность!
cop1152
7

Svchost - это сокращение от «Service Host». Он поддерживает большинство служб на вашем компьютере. Будет несколько Служб, которые размещают себя в своем собственном файле .exe, но большинство Служб Windows должно быть размещено в процессе svchost.exe. Службы на вашем компьютере обрабатывают такие важные вещи, как работа в сети, RpC-сервер, аудио, журнал событий и т. Д.

Введите «services.msc» в «Пуск» -> «Выполнить», чтобы просмотреть службы, запущенные на вашем компьютере. Если вы считаете кого-то ненужным, вы можете остановить службу.

Введите «tasklist / SVC», чтобы увидеть, какие службы размещены в разных файлах svchost.exe.

Фроде Лиллеруд
источник
1

Вот одна строка PowerShell, которая выводит все службы, размещенные в процессах 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

Укороченная версия однострочника выглядит так:

gps svchost | % {gwmi win32_service -f "processid=$($_.id)"} | ft proc*,name,disp*,stat* -auto
Александар
источник