Содержание
- 1 Как принудительно завершить процесс?
- 2 Что делать, если svchost exe грузит процессор в Windows 7
- 3 Что такое svchost.exe в диспетчере задач, почему он грузит процессор и как удалить его из системы
- 4 Svchost грузит память Windows 7. Процесс svchost.exe грузит систему
- 5 Хост-процесс для служб Windows грузит память и процессор
Как принудительно завершить процесс?
Сообщений 0 Оценка 161 [+0/-1] Оценить |
Тестовое приложение Process Viewer
Тестовое приложение PKILL
Иногда в программистcкой практике встает задача принудительно завершить посторонний процесс. Например, ваша программа может запускать внешние программы для обработки некоторых форматов файлов. Если внешняя программа не завершается в разумный промежуток времени, ее придется завершить принудительно и сообщить пользователю об ошибке. Прочитав эту статью, вы сможете убивать чужие процессы направо и налево, по одиночке и скопом. Мы будем считать, что нам известен идентификатор процесса, который мы хотим завершить.
Функция TerminateProcess
Для принудительного и безоговорочного завершения процессов в Win32 служит функция TerminateProcess:
BOOL TerminateProcess( IN HANDLE hProcess, IN DWORD dwExitCode ); |
Сейчас я обязан сделать
Функцию TerminateProcess следует использовать только в исключительных случаях, когда исчерпаны все другие способы воздействия на процесс, поскольку она не позволяет потокам процесса выполнить очистку или сохранить данные, а также не оповещает загруженные DLL о завершении процесса. |
Я уверен, что это предупреждение вас не остановит. Для того, чтобы воспользоваться функцией TerminateProcess, необходимо получить описатель (handle) процесса. Зная идентификатор процесса, это несложно сделать c помощью функции OpenProcess, в итоге функция принудительного завершения процесса может выглядеть, например, так:
BOOL KillProcess( IN DWORD dwProcessId ) { HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId); if (hProcess == NULL) return FALSE; DWORD dwError = ERROR_SUCCESS; if (!TerminateProcess(hProcess, (DWORD)-1)) dwError = GetLastError(); CloseHandle(hProcess); SetLastError(dwError); return dwError == ERROR_SUCCESS; } |
Завершение процессов и система безопасности Windows NT
Если вы воспользуетесь функцией KillProcess, то обнаружите, что хотя она замечательно работает в Windows 95/98, в Windows NT она не может завершить некоторые процессы, потому что OpenProcess возвращает ошибку ERROR_ACCESS_DENIED. В частности, это происходит при попытке остановить процессы системных служб и некоторых DCOM-серверов. Как вы наверное уже догадываетесь, все дело в правах доступа.
Как и любой объект ядра, объект процесса защищен дескриптором безопасности, который проверяется всякий раз, когда открывается описатель процесса. Для разных видов процессов дескриптор безопасности инициализируется по-разному. Вы можете воспользоваться тестовой программой Process Viewer для изучения дескрипторов безопасности процессов. Так, вы можете обнаружить, что дескриптор безопасности для интерактивных процессов выглядит так:
Интерактивный пользователь | Полный доступ |
СИСТЕМА | Полный доступ |
в то время как для системных служб, работающих в контексте системной логон-сессии, дескриптор безопасности выглядит иначе:
Администраторы | Чтение |
СИСТЕМА | Полный доступ |
Теперь ясно, почему OpenProcess не позволяет открыть описатель процесса системной службы с правами PROCESS_TERMINATE, даже если вызывающий пользователь является администратором компьютера. Это может показаться странным, почему администратор компьютера не может остановить любой процесс в системе. На самом деле, такая возможность у него есть, и заключается она в наличии привилегии SE_DEBUG_NAME.
Все привилегии, которые имеет пользователь, могут находиться в двух состояниях: выключенном, неактивном, и включенном, активном состоянии.
Администраторы компьютера имеют привилегию SE_DEBUG_NAME, но по умолчанию она находится в выключенном состоянии и не оказывает влияния на работу OpenProcess.
Когда эта привилегия включена, вызывающий поток может открывать описатели процессов с любыми правами доступа, вне зависимости от того, какой дескриптор безопасности назначен объекту процесса. Это как раз то, что нам нужно.
Ниже приведен модифицированный код функции KillProcess, которая при необходимости включает привилегию SE_DEBUG_NAME, чтобы получить описатель процесса.
BOOL KillProcess( IN DWORD dwProcessId ) { HANDLE hProcess; DWORD dwError; hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId); if (hProcess == NULL) { if (GetLastError() != ERROR_ACCESS_DENIED) return FALSE; OSVERSIONINFO osvi; osvi.dwOSVersionInfoSize = sizeof(osvi); GetVersionEx(&osvi); if (osvi.dwPlatformId != VER_PLATFORM_WIN32_NT) return SetLastError(ERROR_ACCESS_DENIED), FALSE; TOKEN_PRIVILEGES Priv, PrivOld; DWORD cbPriv = sizeof(PrivOld); HANDLE hToken; if (!OpenThreadToken(GetCurrentThread(), TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES, FALSE, &hToken)) { if (GetLastError() != ERROR_NO_TOKEN) return FALSE; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES, &hToken)) return FALSE; } _ASSERTE(ANYSIZE_ARRAY > 0); Priv.PrivilegeCount = 1; Priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Priv.Privileges[0].Luid); if (!AdjustTokenPrivileges(hToken, FALSE, &Priv, sizeof(Priv), &PrivOld, &cbPriv)) { dwError = GetLastError(); CloseHandle(hToken); return SetLastError(dwError), FALSE; } if (GetLastError() == ERROR_NOT_ALL_ASSIGNED) { CloseHandle(hToken); return SetLastError(ERROR_ACCESS_DENIED), FALSE; } hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId); dwError = GetLastError(); AdjustTokenPrivileges(hToken, FALSE, &PrivOld, sizeof(PrivOld), NULL, NULL); CloseHandle(hToken); if (hProcess == NULL) return SetLastError(FALSE), NULL; } if (!TerminateProcess(hProcess, (UINT)-1)) { dwError = GetLastError(); CloseHandle(hProcess); return SetLastError(dwError), FALSE; } CloseHandle(hProcess); return TRUE; } |
Модифицированный вариант функции KillProcess сначала пытается открыть описатель процесса без использования привилегии SE_DEBUG_NAME. Если это у него не получается, он включает привилегию, получает описатель процесса и затем восстанавливает привилегию в исходное состояние.
Теперь с помощью функции KillProcess можно убить практически любой процесс в системе, если, конечно, вы являетесь администратором компьютера. Чтобы проверить новый вариант функции в деле, вы можете воспользоваться тестовым приложением Process Viewer, которое теперь умеет завершать процессы. Например, можно остановить процесс Winlogon и через несколько секунд увидеть синий экран с надписью STOP 0xC000021A (не забудьте сохранить все открытые документы, прежде чем это сделать).
Завершение дерева процессов
Некоторое время назад мой коллега по работе попросил меня написать утилиту, аналогичную утилите kill в Unix. Он занимался переносом каких-то скриптов из Unix на Windows NT и ему нужна была такая утилита. Использовать утилиту, поставляемую в составе Windows NT Resource Kit, он не мог по лицензионным (а может, и религиозным) соображениям.
Я быстро оформил функцию KillProcess в виде небольшого консольного приложения и отправил ему. Коллега был приятно удивлен скорости, с которой я выполнил его просьбу, однако он отметил, что моя версия kill работает не так, как аналог из Unix.
В Unix, kill завершает не только сам процесс, но и все дочерние процессы, которые были запущены из него прямо или косвенно (так называемое дерево процессов). Моя же версия работала как kill -9, когда завершается только указанный процесс.
Таким образом, встала задача повторить поведение Unix kill на Windows NT.
Чтобы завершить все процессы в дереве, необходимо каким-либо образом отследить отношения родитель — потомок между процессами.
В Windows 9x/Me и Windows 2000/XP это позволяют сделать функции перечисления процессов из ToolHelp32 API, в частности поле th32ParentProcessID структуры PROCESSENTRY32 содержит идентификатор родительского процесса. В Windows NT 4.
0 эту информацию можно получить с помощью официально недокументированной функции ZwQuerySystemInformation. (Подробнее о функциях перечисления процессов рассказано в статье Как получить список запущенных процессов?)
Ниже приведен код функции KillProcessEx, которая позволяет завершать как отдельный процесс, так и целое дерево процессов. Если вы читали статью про перечисление процессов, то найдете много знакомых кусков кода в этой функции.
static BOOL KillProcessTreeNtHelper( IN PSYSTEM_PROCESSES pInfo, IN DWORD dwProcessId ) { _ASSERTE(pInfo != NULL); PSYSTEM_PROCESSES p = pInfo; for (;;) { if (p->InheritedFromProcessId == dwProcessId) KillProcessTreeNtHelper(pInfo, p->ProcessId); if (p->NextEntryDelta == 0) break; p = (PSYSTEM_PROCESSES)(((LPBYTE)p) + p->NextEntryDelta); } if (!KillProcess(dwProcessId)) return GetLastError(); return ERROR_SUCCESS; } static BOOL KillProcessTreeWinHelper( IN DWORD dwProcessId ) { HINSTANCE hKernel; HANDLE (WINAPI * _CreateToolhelp32Snapshot)(DWORD, DWORD); BOOL (WINAPI * _Process32First)(HANDLE, PROCESSENTRY32 *); BOOL (WINAPI * _Process32Next)(HANDLE, PROCESSENTRY32 *); hKernel = GetModuleHandle(_T(«kernel32.dll»)); _ASSERTE(hKernel != NULL); *(FARPROC *)&_CreateToolhelp32Snapshot = GetProcAddress(hKernel, «CreateToolhelp32Snapshot»); *(FARPROC *)&_Process32First = GetProcAddress(hKernel, «Process32First»); *(FARPROC *)&_Process32Next = GetProcAddress(hKernel, «Process32Next»); if (_CreateToolhelp32Snapshot == NULL || _Process32First == NULL || _Process32Next == NULL) return ERROR_PROC_NOT_FOUND; HANDLE hSnapshot; PROCESSENTRY32 Entry; hSnapshot = _CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnapshot == INVALID_HANDLE_VALUE) return GetLastError(); Entry.dwSize = sizeof(Entry); if (!_Process32First(hSnapshot, &Entry)) { DWORD dwError = GetLastError(); CloseHandle(hSnapshot); return dwError; } do { if (Entry.th32ParentProcessID == dwProcessId) KillProcessTreeWinHelper(Entry.th32ProcessID); Entry.dwSize = sizeof(Entry); } while (_Process32Next(hSnapshot, &Entry)); CloseHandle(hSnapshot); if (!KillProcess(dwProcessId)) return GetLastError(); return ERROR_SUCCESS; } BOOL KillProcessEx( IN DWORD dwProcessId, IN BOOL bTree ) { if (!bTree) return KillProcess(dwProcessId); OSVERSIONINFO osvi; DWORD dwError; osvi.dwOSVersionInfoSize = sizeof(osvi); GetVersionEx(&osvi); if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) { HINSTANCE hNtDll; NTSTATUS (WINAPI * _ZwQuerySystemInformation)(UINT, PVOID, ULONG, PULONG); hNtDll = GetModuleHandle(_T(«ntdll.dll»)); _ASSERTE(hNtDll != NULL); *(FARPROC *)&_ZwQuerySystemInformation = GetProcAddress(hNtDll, «ZwQuerySystemInformation»); if (_ZwQuerySystemInformation == NULL) return SetLastError(ERROR_PROC_NOT_FOUND), NULL; HANDLE hHeap = GetProcessHeap(); NTSTATUS Status; ULONG cbBuffer = 0x8000; PVOID pBuffer = NULL; do { pBuffer = HeapAlloc(hHeap, 0, cbBuffer); if (pBuffer == NULL) return SetLastError(ERROR_NOT_ENOUGH_MEMORY), FALSE; Status = _ZwQuerySystemInformation( SystemProcessesAndThreadsInformation, pBuffer, cbBuffer, NULL); if (Status == STATUS_INFO_LENGTH_MISMATCH) { HeapFree(hHeap, 0, pBuffer); cbBuffer *= 2; } else if (!NT_SUCCESS(Status)) { HeapFree(hHeap, 0, pBuffer); return SetLastError(Status), NULL; } } while (Status == STATUS_INFO_LENGTH_MISMATCH); dwError = KillProcessTreeNtHelper((PSYSTEM_PROCESSES)pBuffer, dwProcessId); HeapFree(hHeap, 0, pBuffer); } else { dwError = KillProcessTreeWinHelper(dwProcessId); } SetLastError(dwError); return dwError == ERROR_SUCCESS; } |
Используя функцию KillProcessEx, я смог написать утилиту PKILL, которая более точно соответствует своему Unix-аналогу. Эта утилита прилагается в качестве тестового приложения к данной статье.
Завершение 16-битных задач в Windows NT
Рассмотрение вопроса о завершении процессов не будет полным, если мы не затронем тему 16-битных задач на Windows NT. Для завершения 16-битных задач VDMDBG.DLL предоставляет функцию VDMTerminateTaskWOW:
BOOL VDMTerminateTaskWOW( IN DWORD dwProcessId, IN WORD hTask16 ); |
Параметры этой функции говорят сами за себя. Тестовое приложение Process Viewer использует ее для завершения 16-битных задач на Windows NT.
Заключение
Таким образом, теперь вы во всеоружии готовы завершить любой процесс. Но, как и всякое оружие, используйте возможность принудительного завершения процессов с осторожностью.
Cсылки
Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
Сообщений 0 Оценка 161 [+0/-1] Оценить |
Источник: https://www.rsdn.org/article/qna/baseserv/killproc.xml
Что делать, если svchost exe грузит процессор в Windows 7
В Windows 7 самым главным процессом в ОС является Svchost.exe. Очень часто пользователи ПК с Windows 7 встречаются с проблемой, когда этот процесс сильно грузит процессор. Загрузка процессорных ядер может достигать от 50 до 100 процентов. Svchost.exe является хост-процессом, отвечающим за запуск служб группы из динамических библиотек DDL.
То есть система с помощью этого хост-процесса запускает группу служб, не создавая при этом лишних процессов. Такой подход снижает нагрузку на процессор и оперативную память. Если система тормозит и Svchost.exe сильно грузит процессор — это означает, что ОС неправильно работает. Такое поведение системы может вызвать вредоносная программа, а также неполадки в самой ОС.
Чтобы разобраться с этой проблемой, в этом материале мы рассмотрим все способы решения задачи с сильной загрузкой процессора, вызванной процессом Svchost.exe.
Первые шаги, решающие проблему с процессом Svchost.exe
Если у вас возникла ситуация, когда хост-процесс Svchost.exe сильно нагружает процессор, то не следует сразу думать, что это вирус. Кроме вируса виновником этой проблемы может быть сама ОС. Ниже мы рассмотрим список проблем, а также методы их исправления:
- В первом случае проблема с Svchost.exe может возникнуть в случае неправильного запуска одной из служб в системе. В этом случае может помочь банальная перезагрузка ПК.
- Если перезагрузка не помогла, и процесс снова грузит ОС, то еще может помочь принудительное завершение дерева процессов, состоящие из Svchost.exe. Сделать это можно в диспетчере задач, в котором нужно найти один из процессов Svchost.exe и завершить дерево процессов. Ниже показан наглядный пример завершения процессов Svchost.exe.
- Если второй способ не помог, то найдите папку «Prefetch», которая находится в основном каталоге Windows. Быстро попасть в эту директорию можно с помощью стандартного приложения «Выполнить», набрав в нем команду Prefetch После открытия этой директории, ее нужно полностью очистить. Дальнейшим шагом будет повторение действий, описанных во втором способе. Удаление файлов из этой директории помогает удалить настройки ОС, которые специально созданы для ускорения Windows. Но бывают случаи, когда именно эти настройки способствуют хосту Svchost.exe до 100 процентов грузить ЦПУ.
Максимально полную информацию о процессах системы Windows, включая рейтинг опасности каждого процесса, поможет получить специальная программа-утилита Security Task Manager, скачать пробную версию которой можно здесь.
Восстанавливаем нормальную работу процессора с помощью антивируса
Если вышеописанные способы не помогли, то скорей всего ваша Windows 7 заражена вирусом. Обычно заражение вирусом происходит извне. То есть через интернет или через внешний накопитель данных. Если у вас стоит хороший антивирус, то скорей всего вирус не пройдет.
Но бывают случаи, когда антивирусы не видят новые версии вирусов и пропускают их. Если ваш компьютер заражен, то процесс хост Svchost.exe будет грузить процессор до 100 процентов, а также в имени пользователя вы увидите не системные имена «LOCAL» и «NETWORK SERVICE», а совсем другое имя.
Чтобы избавиться от вируса в системе, нужно запустить полную проверку компьютера в Windows 7 на поиск вредоносных программ. Ниже мы рассмотрим пример запуска полной проверки компьютера с помощью антивируса Comodo Internet Security. Также перед запуском любого антивируса для проверки ОС обновите его антивирусную базу. Двигаемся дальше и запустим антивирус Comodo Internet Security.
В главном окне антивируса перейдем к нижней вкладке «Сканирование», после чего откроется меню, в котором можно выбрать варианты сканирования.
В нашем случае нужно выбрать пункт «Полное сканирование». Этот вариант просканирует полностью винчестер, выявит вредоносную программу и обезвредит ее. Ниже показано окно сканирования Comodo Internet Security.
В других антивирусных программах принцип запуска полной проверки ПК максимально схож с рассмотренным. Поэтому если у вас проблема с хост-процессом Svchost.exe, то смело запускайте полную проверку ПК.
Для этого примера мы неспроста выбрали антивирус Comodo Internet Security. В этом антивирусе есть встроенный модуль под названием KillSwitch (в настоящее время этот модуль входит в состав бесплатного набора утилит COMODO Cleaning Essentials, скачать который можно здесь).
Этот модуль представляет собой диспетчер задач, который обладает расширенным функционалом. Например, KillSwitch может остановить дерево процессов и вернуть назад произведенные изменения после этого.
Также особенностью KillSwitch является проверка запущенных процессов на доверие. То есть, если процесс недоверенный, KillSwitch найдет его и укажет это в третьей колонке «Оценка». Эта особенность модуля KillSwitch поможет быстрее определить проблему, связанную с Svchost.exe и загрузкой процессора.
Еще стоит упомянуть, когда вирус заражает сам антивирус или надежно маскируется от него, вследствие чего его не видит установленный антивирус. В этой ситуации на помощь пользователю придёт загрузочный диск Dr.Web LiveDisk. Этот диск представляет собой портативную операционную систему, основанную на Linux, которая грузится с него. После загрузки с этого диска пользователь сможет запустить проверку ПК прямо с загруженной операционной системы.
Такая проверка должна найти и обезвредить вирусы, которые заставляют Svchost.exe грузить процессорные ядра. Наиболее известными вирусами, которые грузят процессор с помощью Svchost.exe, являются:
- «Virus.Win32.Hidrag.d» — представляет собой вирус, написанный на C++. Попав в систему, он осуществляет подмену Svchost.exe. После этого он ищет файлы с расширением «*exe» и заражает их. Вирус является безобидным, он не вредит системе и не крадет информацию. Но постоянное заражение файлов с расширением «*exe» сильно грузит процессор.
- «Net-Worm.Win32.Welchia.a» — этот вирус представляет собой интернет-червь, который нагружает процессор путем интернет атак.
- «Trojan-Clicker.Win32.Delf.cn» — примитивный троян, который регистрирует в системе новый процесс Svchost.exe для открытия определенной страницы в браузере, тем самым нагружая систему.
- «Trojan.Carberp» — опасный троян, который также маскируется под Svchost.exe. Основным предназначением этого вируса является поиск и кража информации крупных торговых сетей.
Сильная загрузка процессора из-за Windows Update
На компьютерах с ОС Windows 7 часто наблюдается ситуация, когда процесс Svchost.exe грузит процессор и память из-за центра обновлений. Чтобы проверить, что именно центр обновлений грузит память и процессор, нужно зайти в «Диспетчер задач» и с помощью Svchost.exe перейти к службам, которыми в данный момент он управляет. Пример такого перехода показан на изображении ниже.
После такого перехода должно открыться окно со службами, где будет выделена служба «wuauserv».
Именно эта служба отвечает за скачивание и установку обновлений на семерку. Исправить эту проблему достаточно просто.
В окне служб диспетчера задач можно полностью остановить «wuauserv» или в панели управления отключить проверку обновлений.
При отключении этой службы нарушается безопасность ОС в целом, так как установка обновлений через центр обновлений будет отключена.
Решить эту задачу можно установкой обновлений вручную. Чтобы не скачивать десятки обновлений с сайта www.microsoft.com и потом долго их устанавливать, лучше всего воспользоваться набором обновлений UpdatePack7R2.
Разработчиком этого набора является «simplix», который также известен под этим ником и является модератором на форуме www.oszone.net. Скачать этот набор можно на сайте http://update7.simplix.info. В данный момент на сайте выложена последняя версия под номером 17.12.15.
После загрузки набора можно приступать к установке обновлений. Для этого запустим инсталлятор.
В появившемся окне нажмем кнопку Установить. После этого начнется процесс установки обновлений.
Этот процесс может занять довольно много времени и зависит от количества уже установленных обновлений. Обновлять таким оффлайновым способом Windows 7 можно постоянно, так как автор проекта постоянно выпускает новые наборы. Также после завершения установки обновлений вы можете заново запустить центр обновлений. В этот раз проблема с загрузкой памяти и процессора должна исчезнуть, так как в этих обновлениях содержится исправление.
Остальные способы решения проблемы с загрузкой процессора из-за Svchost.exe
В этом разделе мы опишем способы, которые в некоторых случаях помогают решить проблему с Svchost.exe, а также увеличивают общую производительность и стабильность системы. Ниже приведен список с подробным описанием каждого из способов:
- Очень часто помогает решить проблему процесса Svchost.exe, даже когда он заражен вирусом, обычный откат ОС с помощью точки восстановления. Но этим способом можно воспользоваться только в том случае, если защита системы включена.
- При длительном использовании различных установленных программ операционная система Windows 7 накапливает на жестком диске очень много мусора. Под мусором подразумеваются временные файлы, создающиеся при использовании различных утилит. Например, файлы истории браузера. В этом случае на помощь придут специальные утилиты для очистки ОС. Наиболее популярной среди них является программа CCleaner.
- Также советуем провести дефрагментацию, которая может повысить общую производительность системы. Дефрагментация хоть и не решит проблему с процессом Svchost.exe, но значительно ускорит его, тем самым ослабив нагрузку на процессор. Одним из лучших дефрагментаторов является утилита Defraggler, которая кроме своей основной функции еще умеет дефрагментировать системные файлы.
- Очистка реестра также помогает решить нашу задачу. Для очистки реестра, как и в способе выше, подойдет утилита CCleaner, которая быстро удалит старые ключи реестра, мешающие правильно работать Svchost.exe.
- Также для всех запущенных процессов, включая Svchost.exe, немаловажным фактором является исправная оперативная память. При неисправной памяти система и запущенные процессы могут вести себя нестабильно. Выходом из этой ситуации будет замена оперативки на исправную память. Проверить память на исправность можно с помощью встроенного средства диагностики в Windows 7.
по теме
Источник: https://UstanovkaOS.ru/reshenie-problem/svchost-exe-gruzit-processor-windows-7.html
Что такое svchost.exe в диспетчере задач, почему он грузит процессор и как удалить его из системы
Юзеры, которые часто используют Диспетчер задач, замечали, что в списке рабочих процессов отображается несколько служб svchost.exe. Но не все, а тем более неопытные пользователи, знают, что такое svchost.exe в Диспетчере задач и за что он отвечает.
Svchost.exe – это системный исполняемый (как следует из названия) файл для ОС Windows. Он отвечает за запуск некоторых приложений и функций, снижая нагрузку на центральный процессор и RAM. Поэтому удалять его из системы нельзя (кроме случаев, когда под эту службу маскируется вредоносное ПО или когда можно отключить неиспользуемые службы, о чем написано в статье «Повышаем производительность компьютера отключая неиспользуемые службы»).
Если в Диспетчере задач отображается несколько копий svchost.exe, не переживайте, поскольку их количество зависит от числа запущенных программ: чем их больше, тем больше этих служб.
Принцип работы процесса
Этот процесс есть почти в каждой версии ОС Windows, но его потенциал раскрылся только с релизом Windows XP. До этого он в основном отвечала за сетевые соединения, с помощью которых компьютер подключается к интернету. Но разработчики Microsoft решили на этом не останавливаться, поэтому теперь служба предназначена для запуска фоновых локальных процессов, относящихся к динамическим библиотекам, которые имеют расширение «.dll».
Интересно! Динамические библиотеки невозможно запустить в обычном режиме.
svchost.exe позволяет сохранять ресурсы компьютера, потому что при использовании службы не нужно физически запускать исполняемый файл. Поэтому уменьшается количество процессов, загружающих RAM и виртуальную память ПК. Именно из-за этого в Диспетчере задач одновременно отображается несколько служб с одинаковым названием.
Помимо этого, файл svchost.exe автоматически запускается при старте Windows, независимо от того, какие программы «висят» в автозапуске. Поэтому полное отключение лишних служб и приложений не повлияет на его загрузку.
Причины загрузки ресурсов
Нередко пользователи замечают, что процесс загружает один из ресурсов (процессор или оперативную память) устройства, независимо от того, запущены программы или нет. На это есть разные причины.
Вирусы
причина – вредоносное ПО, которое попало на компьютер и «маскируется» под файл svchost.exe. Отсортируйте процессы в Диспетчере задач по названию и посмотрите, от чьего имени запущены эти службы. Если это сделано от имени учетной записи пользователя (вашей записи), значит это «проделки» вируса. Если в графе «Имя пользователя» указано: Local Service, Network Service или System, такой файл безопасен.
Если вы думаете, что обнаружили вирус, нажмите по процессу ПКМ → Открыть расположение файла. Так вы определите местоположение зловреда и проверите его через портал VirusTotal.com. Но лучше сразу просканировать систему с помощью программ Dr.Web CureIt или Malwarebytes Anti-Malware. Дело в том, что удаление одного исполняемого файла не поможет избавиться от вируса, поскольку на компьютере наверняка имеются вспомогательные фрагменты, которые восстановят его после перезагрузки или просто не дадут удалить.
Загрузка обновлений
Поскольку в большинстве случаев пользователь не меняет настройки ОС, в Windows по умолчанию установлена автоматическая загрузка обновлений. Это тоже «обязанность» svchost.exe. Для отключения загрузки обновлений:
- введите в строке поиска services.msc → откроется окно Службы;
- ПКМ на пункте Центр обновлений Windows → Свойства → Тип запуска: «Отключена».
Эта причина свойственна тем пользователям, которые устанавливают на компьютер огромное количество программ и приложений, и не следят за ними. Чтобы выявить ненужный софт, установите на ПК программу Process Explorer. Она поможет определить, какие программы отбирают ресурсы устройства, но при этом вы не пользуетесь ними.
Еще одно преимущество Process Explorer – она тесно работает с сервисом проверки файлов на вредоносное ПО – VirusTotal, поэтому поможет отличить системные службы от вирусов.
Чтобы проверить файл, выделите его в окне программы → Options → VirusTotal.com → Check VirusTotal.com.
Использование µTorrent
Часто ресурсы компьютера грузит программа µTorrent при скачивании файлов. Для снижения нагрузки на процессор:
- нажмите в окне программы Ctrl+P → раздел Дополнительно;
- установите на параметре «net.low_cpu» переключатель в положение «Да», а на параметре «net.max_halfopen» минимальное значение (число) и после этого повышайте его до тех пор, пока снова не возникнут проблемы с загрузкой – это предельный параметр.
Устранение проблем
Самый простой способ уменьшить нагрузку на главные компоненты компьютера – перезагрузить его. Но такой подход помогает не всегда. Кардинальная мера – «убить» процесс svchost.exe в Диспетчере задач. Как это сделать для Windows 10.
- Первый способ:
ПКМ по нужному процессу → Подробности → ПКМ по выделенной строке → Завершить дерево процессов. - Второй способ:
- ПКМ по процессу → Подробности → ПКМ по выделенной строке → Перейти к службам;
- в строке поиска введите services.msc → в окне утилиты Службы в списке найдите те, которые были выделены в Диспетчере задач → ПКМ → Свойства → Тип запуска: «Отключена».
Распознать вирус, который маскируется под файл svchost.exe, легко. Он запускается от имени учетной записи юзера или любых других процессов, кроме Local Service, Network Service или System.
Еще одна характерная особенность – «ошибки» в названии. Процессы с названием svhost, svchosts или прочие – это зловреды, которые нужно удалить.
«Чистка» системы
Если вы обнаружили на компьютере вирус, маскирующийся под файл svchost.exe, запустите углубленное сканирование системы установленным антивирусным ПО.
Важно! Наверняка сканирование установленным ПО не принесет результат.
Но лучше используйте специальные утилиты от известных компаний: Dr.Web CureIt, Malwarebytes Anti-Malware или Kaspersky Rescue Disc. Они выявят и обезвредят вредоносное ПО.
Дополнительную информацию о процессе svchost.exe вы узнаете на видео.
Источник: https://geekon.media/process-svchost-exe-v-windows-10990/
Svchost грузит память Windows 7. Процесс svchost.exe грузит систему
Наверняка, никому не нужно объяснять, что очень часто в работе многие пользователи современных ПК сталкиваются с ситуацией замедления работы компьютерного терминала. К сожалению, очень часто можно наблюдать, что именно процесс Svchost грузит память и процессор. Давайте посмотрим, что это за процесс, и как избавиться от ненужной нагрузки на системные ресурсы.
Что за процесс Svchost.exe
Сперва нужно разобраться, что это вообще за служба, и как она работает. Естественно, каждый юзер, заходя в «Диспетчер задач» (Task Manager) при вводе команды в меню «Выполнить» или при вызове при помощи сочетания клавиш Ctrl + Alt + Del в дереве процессов, наблюдает не один, а как минимум четыре-пять процессов Svchost.exe, делающих непонятно что.
Не стоит сразу впадать в панику. Так и должно быть. На самом деле это системная служба, которая была применена специалистами корпорации Microsoft в системах Windows относительно недавно. Имеется ввиду тот факт, что раньше на этот процесс были возложены исключительно функции, отвечающие за корректное сетевое соединение или подключение к сети Интернет.
Это никоим образом не влияло на запуск приложений. Затем разработчики добавили службе головной боли и возложили на нее обязанности, связанные с ускорением запуска программ и их компонентов после старта службы Services.exe.
Вот и получилось, что намеренно или ненамеренно Svchost грузит память Windows 7, как говорится, невзирая на лица и чины. Тут проявилась ситуация, которую по-русски можно охарактеризовать как «хотели как лучше, а получилось как всегда».
Тем не менее, бороться с проявлениями излишней нагрузки можно, но для начала рассмотрим, как именно эта служба влияет на систему.
Прежде всего, стоит сказать, что разработчики попытались сделать единую службу, которая должна отвечать за запуск всех программ. С одной стороны это очень даже хорошо. Зачем запускать кучу ненужных компонентов, чтобы запустить тот или иной процесс? В частности, это касается вызова данных из так называемых динамических библиотек .DLL. Сами по себе такие файлы исполняемыми не являются, а работают только через хосты.
Простейшим примером можно назвать использование плагинов форматов RTAS, DX или VST, подключаемых к аудио-, видеоредакторам или специальным музыкальным секвенсорам через мост DirectX или обслуживающие драйверы типа ASIO4ALL.
Вот и получается, что благие намерения ни к чему хорошему не привели. Одна-единственная служба получила чрезмерную нагрузку, в результате чего служба Svchost грузит память настолько, что ни процессор, ни физическая память (файл подкачки) с такой нагрузкой не справляются. Посудите сами, ведь можно одновременно открыть на компьютерном терминале или ноутбуке до десятка приложений. Некоторые любят проходить любимую игру, слушая при этом музыку. А ведь все это запускается именно через Svchost.exe.
Ну, а если взять в расчет, что имеется соединение с Интернетом, тут и вся система может зависнуть, ведь сама служба, как уже было сказано выше, сочетает в себе не только функции запуска приложений, но и приоритеты сетевого соединения и доступа к Всемирной паутине. Тут стоит учесть и тот момент, что если используется онлайн-игра, причем достаточно ресурсоемкая, будет срабатывать не только служба Svchost.exe. Netsvcs грузит память ни чуть не меньше. Это сопутствующий процесс при сетевом подключении или доступе в Интернет.
Сколько процессов может быть запущено одновременно
Когда пользователь чувствует или наблюдает в дереве процессов, что служба Svchost грузит оперативную память и центральный процессор, он тут же начинает паниковать, ведь в списке имеется минимум четыре одинаковых службы. Не стоит беспокоиться.
В зависимости от количества запущенных приложений и наличия подключения к Интернету или локальной сети их может быть намного больше (до десятка и больше). Некоторые думают, что это вирусы, и пытаются завершить все, что только можно, а затем удалить сопутствующие компоненты и сам файл программы. Это неправильно.
Чуть позже будет сказано о том, как отличить нормальный процесс от вредоносного ПО.
Простейший метод завершения процесса Svchost.exe
Итак, имеем ситуацию, когда Svchost грузит память Windows 7 слишком сильно. Как от этого избавиться простейшим способом? Да очень просто. Нужно просто перезагрузить компьютерный терминал.
После перезагрузки использование системных ресурсов от вызова приложений снизится весьма существенно.
Можно поступить иначе и зайти в «Диспетчер задач», вызываемый из командной строки или привычным сочетанием клавиш Ctrl +Alt + Del, на вкладке «Процессы» найти интересующую нас службу (в данном случае Svchost.exe) и нажать кнопку «Завершить процесс».
При этом нужно выбрать именно тот компонент, который оказывает максимально негативное влияние на использование процессора или оперативной памяти. Естественно, можно завершить и все остальные процессы.
Удаление компонентов процесса
В некоторых случаях наблюдается ситуация, когда Svchost.exe грузит процессор. Что делать в этом случае?
Некоторые специалисты рекомендуют использовать метод физического вмешательства и остановить службу путем удаления папки Prefetch, которая располагается в корневом каталоге Windows (C:\WINDOWS\Prefetch), после чего нужно будет завершить дерево процессов и перезагрузить систему. Ничего страшного не произойдет.
Атрибуты процесса Svchost.exe
Что касается атрибутов, процесс Svchost.exe никогда не запускается от имени пользователя, будь он даже администратором на каком-то конкретном компьютерном терминале или сервере.
В описании процесса могут присутствовать только три варианта: LOCAL SERVICE, SYSTEM или же NETWORK SERVICE. Все что имеет другие атрибуты можно завершать, не задумываясь и без зазрения совести.
Подозрение на вирусы
Конечно, может наблюдаться и такая ситуация, когда видно, что процесс Svchost грузит память без видимой на то причины, а атрибуты службы не соответствуют тому, что было указано выше. В том случае можно быть уверенным, что это компьютерный вирус.
Конечно, такой процесс можно завершить вручную, однако настоятельно рекомендуется проверить систему каким-нибудь мощным антивирусным пакетом.
Это, правда, тоже не всегда помогает, поскольку вирусы маскируются под службу достаточно хорошо и могут висеть даже в оперативной памяти.
Тут лучше воспользоваться приложениями типа Dr. Web Rescue Disc или Kaspersky Rescue Disc, которые стартуют еще до запуска ОС Windows. Такие приложения способны выявлять вирусы даже в тех ситуациях, когда штатный антивирус угрозы пропускает или просто не находит.
Хост-процесс для служб Windows грузит память и процессор
Ряд пользователей может столкнуться с ситуацией, когда их компьютер начинает сильно сбоить и подтормаживать, при этом виновником оказывается процесс svchost.exe, часто потребляющий до 100% мощностей центрального процессора. В этом материале я постараюсь помочь данным пользователям и расскажу, что делать в ситуации, когда Хост-процесс для служб Windows грузит память и процессор, каковы причины данного явления и что предпринять для исправления данной ситуации.
Решаем проблему загрузки ЦП Хост-процессом для служб Windows
Что такое svchost.exe
Название «Svchost» является сокращением от «service host» («главный процесс») и обычно обозначает системный процесс, который одновременно обслуживает ряд важных служб операционной системы Windows. На среднем компьютере может работать до 15 процессов svchost.exe, и каждый процесс может отвечать за работу одной или несколько служб ОС Windows.
Скриншот Диспетчера задач Windows
Использование одного процесса svchost для обслуживания несколько служб является оправданным, позволяя сэкономить ресурсы операционной системы и ускорить её работу. С линейки Виндовс NT процесс svchost является обязательным атрибутом семейства ОС Windows и присутствует в каждой ОС начиная с Windows 2000. Далее мы разберём как исправить ситуацию, когда Хост-процесс для служб Windows грузит компьютер.
Если вы запустите Диспетчер задач, перейдёте во вкладку «Процессы», и нажмёте на кнопку «Отображать процессы всех пользователей», а затем кликните на кнопку «Имя образа», то вы увидите несколько процессов svchost.
exe, обычно запущенных от имени пользователя «SYSTEM», «LOCAL SERVICE» и «NETWORK SERVICE».
Если же у вас процесс svchost работает от вашего имени или имени других не системных пользователей, то это может быть признаком наличия на вашем компьютере различных вирусных программ, от которых немедленно нужно избавиться.
Сам запускаемый файл процесса обычно находится по адресу Windows\System32 (32-битная ОС) или Windows\SysWOW64 (64-битная ОС).
Хост-процесс для служб Windows
Хост-процесс для служб Windows грузит память и процессор – причины дисфункции
Итак, каковы же причины, при которых хост-процесс для служб Windows грузит память и процессор? Я бы отметил следующие:
- Случайный сбой операционной системы;
- Повреждение реестра ОС Виндовс;
- Аппаратные проблемы компьютера (засорение внутренностей ПК пылью, проблемы в работе памяти и так далее);
- Проблемы с установкой обновлений в данной операционной системе;
- Работа вирусных программ;
- Раздутый размер log-файла.
После того, как мы определились с причинами того, почему хост-процесс загружает систему, перейдём к списку действий для решения проблемы.
Svchost.exe грузит процессор на 50%
Как исправить проблему «svchost загружает систему»
Итак, как избавиться от проблемы, при которой хост-процесс грузит Windows? Рекомендую выполнить следующее:
- Установите все необходимые обновления для вашей ОС. Если есть вероятность, что система устанавливает нужные обновления, то просто дождитесь конца процесса установки;
- Если по истечении нескольких часов ничего не изменилось, тогда перезагрузите ваш компьютер, если проблема случайна, то она исчезнет;
- Попробуйте самостоятельно завершить работу проблемного процесса svchost.exe. Запустите диспетчер задач, перейдите во вкладку «Процессы», кликните на проблемный (затратный) процесс правой клавишей мыши и выберите «Завершить дерево процессов»;
Завершаем дерево процессов
- Удалите всё содержимое папки Prefetch по адресу Windows\Prefetch. Там хранятся различные данные о запускаемых файлах, в том числе уже давно не нужных пользователю, и очистка данной папки может помочь в вопросе, когда Хост-процесс для служб Windows грузит память и процессор. После очистки указанной директории вновь попробуйте завершить проблемный процесс как описано выше;
- Отключите проверку обновлений операционной системы (полная инструкция). Перейдите в Панель управления, выберите «Систему и безопасность», затем идите в «Центр обновления Виндовс», кликните на «Настройка параметров слева» и выберите «Не проверять наличие обновлений»;
Отключаем обновления
- Отключите службу «Центр обновления Windows». Нажмите на кнопку «Пуск», в строке поиска наберите services.msc, в списке служб найдите «Центр обновления Windows», кликните на неё дважды и выберите тип запуска «Отключена»;
- Очистите системный log-файл. Нажмите «Пуск», в строке поиска наберите eventvwr.msc и нажмите ввод. Откройте вкладку «Журналы Windows», нажмите на «Приложение» правой клавишей мыши, и в появившемся меню выберите «Очистить журнал». То же самое проделайте для вкладок «Безопасность», «Установка», «Система», «Перенаправленные события»;
Очищаем log-файл
- Используйте программы для очистки и восстановления работоспособности реестра (CCleaner, RegCleaner и ряд других аналогов);
- Проверьте вашу систему на наличие программ-зловредов (помогут такие инструменты как Dr. Web CureIt!, Trojan Remover, Malware Anti-Malware и др.), проследите расположение файла svchost.exe (где он должен находится я уже упоминал выше) и его правильное название (должно быть только «svchost.exe» без модификаций);
- Выполните откат системы на предыдущую точку восстановления (полная инструкция). Нажмите «Пуск», в строке поиска наберите rstrui, и откатите систему на её стабильную версию;
- Отнесите ваш компьютер в сервисный центр для очистки его от пыли и проверки работоспособности его узлов (память, блок питания, видеокарта и др.), или при наличии достаточной квалификации выполните эти процедуры самостоятельно.
-решение
Выше мной была разобрана ситуация, при которой хост-процесс для служб Windows грузит процессор и память, а также дан рецепт решения данной проблемы.
Излишняя загрузка ЦП компьютера может иметь целый комплекс причин, от банальной установки обновлений для вашей системы и до различных аппаратных проблем, включая проблемы в работе памяти, блока питания и прочих элементов вашего компьютера.
Рекомендую выполнить весь комплекс изложенных мною советов, один из них обязательно окажется для вас наиболее эффективным и поможет решить проблему с хост-процессом на вашем ПК.
Источник: https://sdelaicomp.ru/nastrojka-sistemy/xost-process-dlya-sluzhb-windows-gruzit-pamyat-i-processor.html