Что такое процесс хоста службы (svchost.exe) и почему так много выполняется?

Если вы когда-либо просматривали диспетчер задач, вы, возможно, задавались вопросом, почему так много запущенных процессов узла службы. Вы не можете их убить, и уж точно не вы их запускали. Итак, какие они?

Процесс Service Host служит оболочкой для загрузки служб из файлов DLL. Службы организованы в связанные группы, и каждая группа запускается в отдельном экземпляре процесса узла службы. Таким образом, проблема в одном экземпляре не влияет на другие экземпляры. Этот процесс является важной частью Windows, запуск которой невозможно предотвратить. 

Эта статья является частью нашей текущей серии, в которой объясняются различные процессы, обнаруженные в диспетчере задач, такие как dwm.exe, ctfmon.exe, mDNSResponder.exe, conhost.exe, rundll32.exe, Adobe_Updater.exe и многие другие. Не знаете, что это за услуги? Лучше начни читать!

Итак, что такое процесс хоста службы?

Вот ответ, согласно Microsoft:

Svchost.exe - это общее имя хост-процесса для служб, запускаемых из динамически подключаемых библиотек.

Но это нам не особо помогает. Некоторое время назад Microsoft начала менять большую часть функций Windows, полагаясь на внутренние службы Windows (которые запускались из файлов EXE), на использование файлов DLL. С точки зрения программирования это делает код более пригодным для повторного использования и, возможно, его легче поддерживать в актуальном состоянии. Проблема в том, что вы не можете запустить DLL-файл прямо из Windows так же, как исполняемый файл. Вместо этого для размещения этих служб DLL используется оболочка, загружаемая из исполняемого файла. Так родился процесс Service Host (svchost.exe).

Почему выполняется так много процессов хоста службы?

СВЯЗАННЫЕ: Что это за процесс и почему он выполняется на моем компьютере?

Если вы когда-нибудь заглядывали в раздел «Службы» на панели управления, вы, вероятно, замечали, что Windows требует большого количества служб. Если каждая отдельная служба запускается под одним процессом узла службы, сбой в одной службе потенциально может вывести из строя всю Windows. Вместо этого они отделены.

Службы организованы в логические группы, которые в некоторой степени связаны, а затем создается один экземпляр узла службы для размещения каждой группы. Например, один процесс узла службы запускает три службы, связанные с брандмауэром. Другой процесс узла службы может запускать все службы, связанные с пользовательским интерфейсом, и так далее. На изображении ниже, например, вы можете увидеть, что один процесс узла службы запускает несколько связанных сетевых служб, а другой - службы, связанные с удаленными вызовами процедур.

Могу ли я что-нибудь сделать со всей этой информацией?

СВЯЗАННЫЕ: Следует ли отключить службы Windows, чтобы ускорить работу компьютера?

Честно говоря, не много. Во времена Windows XP (и предыдущих версий), когда у ПК были гораздо более ограниченные ресурсы, а операционные системы не были столь тонко настроены, часто рекомендовали запретить Windows запускать ненужные службы. В наши дни мы больше не рекомендуем отключать службы. Современные ПК обычно загружены памятью и мощными процессорами. Добавьте это к тому факту, что способ обработки служб Windows в современных версиях (и то, какие службы выполняются) был оптимизирован, и устранение служб, которые, по вашему мнению, вам не нужны, на самом деле больше не имеет большого влияния.

Тем не менее, если вы заметили, что конкретный экземпляр узла службы или связанная служба вызывает проблемы, такие как постоянное чрезмерное использование ЦП или ОЗУ, вы можете проверить конкретные задействованные службы. По крайней мере, это может дать вам представление о том, с чего начать устранение неполадок. Есть несколько способов узнать, какие именно сервисы размещены на конкретном экземпляре Service Host. Вы можете проверить вещи в диспетчере задач или с помощью отличного стороннего приложения под названием Process Explorer.

Проверьте связанные службы в диспетчере задач

Если вы используете Windows 8 или 10, процессы отображаются на вкладке «Процессы» диспетчера задач под их полными именами. Если процесс служит хостом для нескольких служб, вы можете увидеть эти службы, просто расширив процесс. Это позволяет очень легко определить, какие службы принадлежат каждому экземпляру процесса узла службы.

Вы можете щелкнуть правой кнопкой мыши любую отдельную службу, чтобы остановить службу, просмотреть ее в приложении панели управления «Службы» или даже найти в Интернете информацию о службе.

Если вы используете Windows 7, все немного иначе. Диспетчер задач Windows 7 не группировал процессы одинаковым образом и не отображал обычные имена процессов - он только отображал все запущенные экземпляры «svchost.exe». Вам нужно было немного изучить, чтобы определить службы, связанные с каким-либо конкретным экземпляром «svchost.exe».

На вкладке «Процессы» диспетчера задач в Windows 7 щелкните правой кнопкой мыши конкретный процесс «svchost.exe» и выберите «Перейти к службе».

Это переместит вас на вкладку «Службы», где будут выбраны все службы, работающие в рамках этого процесса «svchost.exe».

Затем вы можете увидеть полное имя каждой службы в столбце «Описание», чтобы вы могли отключить службу, если вы не хотите, чтобы она работала, или устранить причину, по которой она вызывает проблемы.

Проверьте связанные службы с помощью Process Explorer

Microsoft также предоставляет отличный продвинутый инструмент для работы с процессами в составе своей линейки Sysinternals. Просто скачайте Process Explorer и запустите его - это портативное приложение, поэтому устанавливать его не нужно. Process Explorer предоставляет всевозможные расширенные функции - и мы настоятельно рекомендуем прочитать наше руководство по пониманию Process Explorer, чтобы узнать больше.

СВЯЗАННЫЕ: Что такое «портативное» приложение и почему оно важно?

Однако для наших целей Process Explorer группирует связанные службы под каждым экземпляром «svchost.exe». Они перечислены по именам файлов, но их полные имена также отображаются в столбце «Описание». Вы также можете навести указатель мыши на любой из процессов «svchost.exe», чтобы увидеть всплывающее окно со всеми службами, связанными с этим процессом, даже теми, которые в данный момент не запущены.

Может ли этот процесс быть вирусом?

Сам процесс является официальным компонентом Windows. Хотя вполне возможно, что вирус заменил реальный узел службы собственным исполняемым файлом, это очень маловероятно. Если вы хотите быть уверенным, вы можете проверить расположение файла, лежащего в основе процесса. В диспетчере задач щелкните правой кнопкой мыши любой процесс узла службы и выберите параметр «Открыть расположение файла».

Если файл хранится в папке Windows \ System32, можно быть уверенным, что вы не имеете дело с вирусом.

СВЯЗАННЫЕ: Какой лучший антивирус для Windows 10? (Достаточно ли хорош Защитник Windows?)

Тем не менее, если вы все же хотите немного больше спокойствия, вы всегда можете сканировать на вирусы с помощью предпочитаемого вами антивирусного сканера. Береженого Бог бережет!