Cô lập dịch vụ lưu trữ (svchost.exe) trong quy trình riêng của mình


13

Vì hiện tại nhiều siêu nhân có thể đã biết, svchost.exe được Microsoft sử dụng để lưu trữ nhiều dịch vụ Windows trong một quy trình, với một quy trình cho mỗi nhóm dịch vụ.

Trong Windows 7 (và sau này?), Người ta có thể nhấp chuột phải vào một quy trình svchost.exe cụ thể trong Trình quản lý tác vụ và chọn "Chuyển đến (các) dịch vụ" để xem các dịch vụ đang chạy "bên trong" nó. Trên tất cả các phiên bản Windows, Process Explorer cũng có thể được sử dụng.

Tuy nhiên, điều này không cho phép một người nhìn thấy, ví dụ như dịch vụ cụ thể nào đang ghim CPU ở mức 100% hoặc sử dụng 700 MB bộ nhớ. Người ta có thể tự dừng các dịch vụ trong cùng một nhóm và sử dụng quy trình loại bỏ, nhưng thật tẻ nhạt, đặc biệt là nếu sự cố chỉ xảy ra không liên tục.

Microsoft có lẽ có lý do chính đáng để nhóm các dịch vụ như thế này (có thể giảm chi phí cho mỗi quy trình, có lẽ vậy?), Nhưng có cách nào để buộc một dịch vụ cụ thể chạy riêng rẽ trong Svchost.exe không?

Câu trả lời:


16

Không, cách thích hợp là chạy lệnh này:

sc configwuauserv type= own

cấu hình này để chạy Windows Update trong quy trình riêng của mình. Để hoàn nguyên điều này, hãy chạy

sc config wuauserv type= share

từ một dấu nhắc lệnh với quyền quản trị . Điều này thay đổi giá trị cài đặt type. Nếu loại là 0x20một quy trình nhóm , nếu giá trị 0x10là một quy trình riêng .

Kể từ Windows 10 Creators Update (Phiên bản 1703, Build 15063), Windows sẽ tự làm điều này nếu bạn có đủ RAM .


1

Chỉ có cách tôi biết là thông qua hack registry. Từ chối trách nhiệm chỉnh sửa cơ sở dữ liệu đăng ký thông thường được áp dụng (nó có thể phá hủy mọi thứ từ cài đặt Windows của bạn cho toàn bộ cấu trúc không thời gian).

Ví dụ sau đây cô lập wuauservdịch vụ Windows Update ( ), được biết là hoạt động sai và sử dụng tài nguyên quá mức. Phương pháp này chỉ được thử nghiệm trên Windows 7 .

  1. Bắt đầu regedit.exe (Trình chỉnh sửa sổ đăng ký) và điều hướng đến

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

    Khóa này chứa khóa con cho mỗi nhóm chứa cài đặt nhóm, cũng như giá trị REG_MULTI_SZ cho mỗi nhóm liệt kê các dịch vụ trong nhóm.

  2. Tìm trong khóa con cho nhóm hiện tại của dịch vụ đích (trong ví dụ này netsvcs:), sau đó tạo một khóa con mới với tên phù hợp và nội dung giống hệt nhau. Hãy nhớ quan sát các loại giá trị, cũng như nội dung.

  3. Tạo một giá trị REG_MULTI_SZ được đặt tên theo nhóm mới, chỉ chứa một dòng duy nhất có tên dịch vụ; và xóa tên dịch vụ khỏi nhóm REG_MULTI_SZ hiện có của nó.

  4. Tiếp theo, điều hướng đến khoá con dịch vụ đích bên dưới HKLM\SYSTEM\CurrentControlSet\services. Trong ví dụ này:

     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\wuauserv
    
  5. Chỉnh sửa ImagePathgiá trị và thay đổi tên nhóm sau -kthành tên nhóm mới.

  6. Khởi động lại dịch vụ đích (ví dụ: sử dụng tab Dịch vụ trong Trình quản lý tác vụ hoặc thông qua services.msc) và nó sẽ xuất hiện trong quy trình svchost.exe riêng của nó.

Lần tới, Windows Update chạy amok, việc sử dụng tài nguyên của nó sẽ hiển thị ngay lập tức trong Trình quản lý tác vụ và thậm chí nó có thể bị hủy bằng cách sử dụng "Quá trình kết thúc" (tuy nhiên không được khuyến nghị cho các dịch vụ quan trọng hơn).

Nếu dịch vụ không khởi động, hãy xem lại các bước trên và thử lại hoặc thử hoàn nguyên các thay đổi của bạn, trong khi nhớ lại cảnh báo ở trên cùng. :-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.