Mengisolasi layanan yang diinangi (svchost.exe) dalam prosesnya sendiri

13

Karena banyak pengguna super mungkin sadar sekarang, svchost.exe digunakan oleh Microsoft untuk meng-host beberapa layanan Windows dalam satu proses, dengan satu proses per grup layanan.

Di Windows 7 (dan lebih baru?), Seseorang dapat mengklik kanan pada proses svchost.exe tertentu di Task Manager dan pilih "Pergi ke layanan" untuk melihat layanan yang menjalankan "di dalam" itu. Di semua versi Windows, Process Explorer juga dapat digunakan.

Namun, ini tidak memungkinkan orang untuk melihat misalnya layanan mana yang menyematkan CPU pada 100%, atau menggunakan memori 700 MB. Seseorang dapat secara manual menghentikan layanan dalam kelompok yang sama dan menggunakan proses eliminasi, tetapi itu membosankan, terutama jika masalah hanya terjadi sesekali.

Microsoft mungkin memiliki alasan yang bagus untuk mengelompokkan layanan seperti ini (mengurangi overhead per-proses, mungkin?), Tetapi apakah ada cara untuk memaksa layanan tertentu agar berjalan terisolasi di svchost.exe sendiri?

Søren Løvborg
sumber

Jawaban:

16

Tidak, cara yang tepat adalah menjalankan perintah ini:

sc configwuauserv type= own

ini mengkonfigurasi untuk menjalankan Pembaruan Windows dalam prosesnya sendiri. Untuk mengembalikan ini, jalankan

sc config wuauserv type= share

dari prompt perintah dengan hak admin . Ini mengubah nilai pengaturan type. Jika tipe 0x20itu adalah proses kelompok , jika nilainya 0x10itu adalah proses sendiri .

Karena Pembaruan Windows 10 Creators (Versi 1703, Build 15063), Windows melakukan ini sendiri jika Anda memiliki cukup RAM .

magicandre1981
sumber
1

Satu-satunya cara saya tahu adalah melalui peretasan registri. Penafian pengeditan basis data registri yang biasa berlaku (dapat merusak apa pun dari penginstalan Windows Anda ke seluruh jalinan ruangwaktu).

Contoh berikut mengisolasi layanan Pembaruan Windows ( wuauserv), yang diketahui berperilaku salah dan menggunakan sumber daya yang berlebihan. Metode ini telah diuji hanya pada Windows 7 .

  1. Mulai regedit.exe (Editor Registri), dan navigasikan ke

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

    Kunci ini berisi subkunci untuk setiap grup yang berisi pengaturan grup, serta nilai REG_MULTI_SZ untuk setiap grup yang mencantumkan layanan dalam grup.

  2. Cari di subkunci untuk grup layanan target saat ini (dalam contoh ini:) netsvcs, lalu buat subkunci baru dengan nama yang sesuai dan konten yang identik. Ingatlah untuk mengamati jenis nilai, serta konten.

  3. Buat nilai REG_MULTI_SZ dinamai grup baru, berisi hanya satu baris dengan nama layanan; dan hapus nama layanan dari grup yang ada REG_MULTI_SZ.

  4. Selanjutnya, navigasikan ke subkunci layanan target di bawah HKLM\SYSTEM\CurrentControlSet\services. Dalam contoh ini:

     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\wuauserv
    
  5. Edit ImagePathnilainya, dan ubah nama grup setelah -kmenjadi nama grup baru.

  6. Mulai ulang layanan target (mis. Menggunakan tab Services di Task Manager, atau via services.msc), dan itu akan muncul dalam proses svchost.exe sendiri.

Lain kali Pembaruan Windows menjalankan amuk, penggunaan sumber dayanya segera terlihat di Task Manager, dan bahkan dapat dimatikan menggunakan "End Process" (meskipun tidak direkomendasikan untuk layanan yang lebih kritis).

Jika layanan gagal memulai, tinjau langkah-langkah di atas dan coba lagi, atau coba kembalikan perubahan Anda, sambil mengingat peringatan di bagian atas. :-)

Søren Løvborg
sumber