Ізолюйте розміщену службу (svchost.exe) у власному процесі


12

Як багато суперкористувачів, напевно, знають зараз, svchost.exe використовується Microsoft для розміщення декількох служб Windows в одному процесі, з одним процесом на групу послуг.

У Windows 7 (і пізніше?) Можна клацнути правою кнопкою миші на конкретному процесі svchost.exe в диспетчері завдань і вибрати "Перейти до служби (ів)", щоб побачити служби, що працюють "всередині". У всіх версіях Windows, Process Explorer можна також використовувати.

Однак це не дозволяє бачити, наприклад, який конкретний сервіс закріплює процесор на 100% або використовує 700 Мб пам'яті. Можна вручну зупинити послуги в одній групі і використовувати процес елімінації, але це втомлює, особливо якщо проблема виникає лише з перервами.

Microsoft, мабуть, має хороші підстави групувати такі послуги (скорочення накладних витрат на процес, можливо?), Але чи є спосіб змусити певну службу запускати ізольовано у власному svchost.exe?

Відповіді:


14

Ні належним чином це виконати цю команду:

sc configwuauserv type= own

це налаштування для запуску Windows Update у власному процесі. Щоб скасувати це, запустіть

sc config wuauserv type= share

від a командного рядка з правами адміністратора . Це змінює значення налаштування type. Якщо тип є 0x20 це груповий процес , якщо значення 0x10 це власний процес .

Оскільки оновлення Windows 10 Creators (версія 1703, збірка 15063), Windows робить це самостійно, якщо у вас достатньо оперативної пам'яті .


1

Тільки я знаю, це через реєстр злому. Застосовується звичайний застереження щодо редагування бази даних реєстру (він може знищити все, що з вашого Windows встановлено на всю тканину простору-часу).

У наступному прикладі виділено Windows Update ( wuauserv ) послуга, яка, як відомо, погано поводиться і використовує надмірні ресурси. Метод був перевірений тільки на Windows 7 .

  1. Запустіть regedit.exe (редактор реєстру) і перейдіть до

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost
    

    Цей ключ містить підрозділ для кожної групи, що містить налаштування групи, а також значення REG_MULTI_SZ для кожної групи з переліком послуг у групі.

  2. Перегляньте підрозділ для поточної групи цільової служби (у цьому прикладі: netsvcs ), потім створити новий підрозділ з відповідним ім'ям та ідентичним змістом. Не забувайте дотримуватися типів значень, а також вмісту.

  3. Створіть значення REG_MULTI_SZ, назване після нової групи, що містить лише один рядок з назвою служби; і видалити ім'я служби з існуючої групи REG_MULTI_SZ.

  4. Потім перейдіть до підрозділу цільової служби нижче HKLM\SYSTEM\CurrentControlSet\services. У цьому прикладі:

     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\wuauserv
    
  5. Редагувати ImagePath і змініть назву групи після -k до нового імені групи.

  6. Перезапустіть цільову службу (наприклад, використовуючи вкладку "Служби" в диспетчері завдань або через службу .msc), і вона повинна відображатися в окремому процесі svchost.exe.

Наступного разу, коли Windows Update запускається, його використання ресурсів відразу видно в диспетчері завдань, і його навіть можна вбити за допомогою "Завершити процес" (не рекомендується для більш важливих служб).

Якщо послуга не запущена, перегляньте наведені вище дії та повторіть спробу, або спробуйте повернути зміни, нагадавши попередження у верхній частині. :-)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.