แยกบริการโฮสต์ (svchost.exe) ในกระบวนการของตัวเอง


13

เนื่องจาก superusers หลายคนอาจทราบแล้วในขณะนี้svchost.exeถูกใช้โดย Microsoft เพื่อโฮสต์บริการ Windows หลายอย่างในกระบวนการเดียวด้วยกระบวนการเดียวต่อหนึ่งกลุ่มบริการ

ใน Windows 7 (และใหม่กว่า) ผู้ใช้สามารถคลิกขวาบนกระบวนการ svchost.exe ที่เจาะจงในตัวจัดการงานและเลือก "ไปที่บริการ" เพื่อดูบริการที่กำลังทำงานอยู่ "ข้างใน" คุณสามารถใช้Process Explorer สำหรับ Windows ทุกเวอร์ชันได้

อย่างไรก็ตามสิ่งนี้ไม่อนุญาตให้มีใครดูเช่นบริการใดที่ตรึง CPU ที่ 100% หรือใช้หน่วยความจำ 700 MB หนึ่งสามารถหยุดบริการในกลุ่มเดียวกันและใช้กระบวนการกำจัดด้วยตนเอง แต่มันน่าเบื่อโดยเฉพาะอย่างยิ่งหากปัญหาเกิดขึ้นเป็นระยะ ๆ เท่านั้น

Microsoft น่าจะมีเหตุผลที่ดีในการจัดกลุ่มบริการเช่นนี้ (ลดค่าใช้จ่ายต่อกระบวนการหรืออาจเป็นไปได้) แต่มีวิธีใดที่จะบังคับให้บริการบางอย่างทำงานแยกต่างหากใน svchost.exe

คำตอบ:


16

ไม่วิธีที่เหมาะสมในการเรียกใช้คำสั่งนี้:

sc configwuauserv type= own

การกำหนดค่านี้เพื่อเรียกใช้ Windows Update ในกระบวนการของตัวเอง หากต้องการคืนค่านี้ให้เรียกใช้

sc config wuauserv type= share

จากพร้อมรับคำสั่งด้วยสิทธิผู้ดูแลระบบ typeนี้จะเปลี่ยนค่าการตั้งค่า ถ้าชนิดคือ0x20มันเป็นกระบวนการกลุ่มถ้าค่าคือมันเป็นกระบวนการของตัวเอง0x10

ตั้งแต่ Windows 10 ผู้สร้าง Update (เวอร์ชัน 1703 รูปร่าง 15063) ของ Windows ไม่นี้ในตัวเองถ้าคุณมี RAM


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. เริ่มบริการเป้าหมายใหม่ (เช่นใช้แท็บ Services ใน Task Manager หรือผ่าน services.msc) และควรปรากฏในกระบวนการ svchost.exe แยกต่างหาก

ครั้งต่อไปที่ Windows Update ทำงานเป็นจำนวนมากการใช้ทรัพยากรจะเห็นได้ทันทีในตัวจัดการงานและอาจถูกฆ่าโดยใช้ "กระบวนการสิ้นสุด" (ไม่แนะนำสำหรับบริการที่สำคัญยิ่งกว่า)

หากบริการล้มเหลวในการเริ่มต้นให้ตรวจสอบขั้นตอนข้างต้นแล้วลองอีกครั้งหรือลองย้อนกลับการเปลี่ยนแปลงของคุณในขณะที่จำคำเตือนที่ด้านบน :-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.