Да, есть (почти) ненавязчивый и простой способ:
Разделите каждую службу для запуска в своем собственном процессе SVCHOST.EXE, и служба, использующая циклы ЦП, будет легко видна в Process Explorer (пробел после "=" необходим):
SC Config Servicename Type= own
Сделайте это в окне командной строки или поместите в сценарий BAT. Требуются права администратора и перезагрузка компьютера, прежде чем он вступит в силу.
Исходное состояние может быть восстановлено:
SC Config Servicename Type= share
Пример: чтобы инструментарий управления Windows работал в отдельном файле SVCHOST.EXE:
SC Config winmgmt Type= own
Эта техника не имеет никаких побочных эффектов, за исключением, возможно, незначительного увеличения потребления памяти. Помимо наблюдения за загрузкой ЦП для каждой службы, она также позволяет легко отслеживать дельту ошибок страниц, скорость чтения дискового ввода-вывода и скорость записи дискового ввода-вывода для каждой службы. Для Process Explorer, меню View / Select Columns: вкладка Process Process / Page Fault Delta, вкладка Performance Process / IO Delta Write Bytes, вкладка Performance Process / IO Delta Read Bytes, соответственно.
В большинстве систем есть только один процесс SVCHOST.EXE, который имеет много сервисов. Я использовал эту последовательность (ее можно вставить прямо в окно командной строки):
rem 1. "Automatic Updates"
SC Config wuauserv Type= own
rem 2. "COM+ Event System"
SC Config EventSystem Type= own
rem 3. "Computer Browser"
SC Config Browser Type= own
rem 4. "Cryptographic Services"
SC Config CryptSvc Type= own
rem 5. "Distributed Link Tracking"
SC Config TrkWks Type= own
rem 6. "Help and Support"
SC Config helpsvc Type= own
rem 7. "Logical Disk Manager"
SC Config dmserver Type= own
rem 8. "Network Connections"
SC Config Netman Type= own
rem 9. "Network Location Awareness"
SC Config NLA Type= own
rem 10. "Remote Access Connection Manager"
SC Config RasMan Type= own
rem 11. "Secondary Logon"
SC Config seclogon Type= own
rem 12. "Server"
SC Config lanmanserver Type= own
rem 13. "Shell Hardware Detection"
SC Config ShellHWDetection Type= own
rem 14. "System Event Notification"
SC Config SENS Type= own
rem 15. "System Restore Service"
SC Config srservice Type= own
rem 16. "Task Scheduler"
SC Config Schedule Type= own
rem 17. "Telephony"
SC Config TapiSrv Type= own
rem 18. "Terminal Services"
SC Config TermService Type= own
rem 19. "Themes"
SC Config Themes Type= own
rem 20. "Windows Audio"
SC Config AudioSrv Type= own
rem 21. "Windows Firewall/Internet Connection Sharing (ICS)"
SC Config SharedAccess Type= own
rem 22. "Windows Management Instrumentation"
SC Config winmgmt Type= own
rem 23. "Wireless Configuration"
SC Config WZCSVC Type= own
rem 24. "Workstation"
SC Config lanmanworkstation Type= own
rem End.
HTTPFilter, KDC, Netlogon, NTLMssp, PolicyAgent, ProtectedStorage, SamSs, Eventlog, PlugPlay
(все связано сlsass.exe
)Хотя я не знаю простого способа сделать это напрямую, вы часто можете найти его на странице свойств Process Explorer для процесса svchost. На вкладке «Службы» в свойствах процесса будет указано, какие службы размещены в этом процессе. А вкладка Threads покажет вам потоки и стеки потоков, а также их загрузку процессора. Часто начальный адрес в потоке будет указывать на DLL точки входа, и, соответственно, на службу, работающую в этом потоке. В других случаях вы можете посмотреть на стек вызовов и увидеть имя модуля в стеке вызовов, которое говорит вам, какой фрагмент кода выполняется.
источник
Попробуйте инструмент Service Disclosure . Это:
Ваши комментарии и предложения приветствуются.
@ Питер Мортенсен: Спасибо за идею.
источник
В Powershell вы можете сделать это для всех не-lsass-сервисов, используя следующие команды:
Список, который здесь исключен, должен быть запущен в общем lsass.exe, за исключением агента политики , который требуется для правильной связи агента групповой политики во время загрузки.
Кроме того, недавно обнаружили , что был (процесс активации) и w3svc (IIS World Wide Web) необходимо разделить свои процессы, чтобы они были добавлены к исключениям.
Это было протестировано в Windows 10 (1607, сборка 14393.953), исключения в XP, ... отличаются .
источник
Я не знаю, если это все еще вопрос, на который вы хотите получить ответы, но, устраняя ошибку svchost клиента, я узнал, что для этого есть командная строка: «tasklist / svc». Это дает полный список запущенных процессов, с идентификатором процесса и сервисами, которые запускает каждый процесс. Это не дает использовать процессор, но вы можете закрывать их по одному процессу за раз по идентификатору процесса и узнать, по крайней мере, какая группа сервисов засоряет ваш процессор.
источник
В настоящее время вы можете использовать PowerShell, чтобы изменить типы служб на «Собственный процесс» и просмотреть память для каждого из них в отдельности. Это Гист показывает полный код. Основная идея заключается в попытке изменить тип сервиса с наименее навязчивого на наиболее навязчивый способ:
При вводе
Set-ServiceTypeToOwnProcess.ps1
иEnable-Privilege.ps1
файлы в той же папке, вы можете выполнить сценарий , как это:источник