Chắc hẳn các bạn sẽ phân vân rằng tại sao lại phải có
đến hàng tá các process cần phải chạy và svchost.exe là một ví dụ như vậy. Quả
thực bạn sẽ không thể không chạy chương trình này nhưng cũng không cần phải nhớ
để chạy chúng… vậy chúng là gì?
Vậy đó là các file gì?
Vậy đó là các file gì?
Theo Microsoft: "svchost.exe là một trình cấu hình
- host process cho các dịch vụ để chạy từ các thư viện liên kết động”.
Trước đây, Microsoft đã chuyển tất cả các chức năng từ các dịch vụ Windows bên trong vào các file .dll thay cho các file .exe. Từ bối cảnh lập trình thì cách thực hiện này sẽ cho phép tái sử dụng lại… tuy nhiên vấn đề phát sinh ở đây là bạn không thể khởi chạy file .dll trực tiếp từ Windows mà nó cần phải được load từ một file thực thi .exe. Chính vì vậy svchost.exe process ra đời.
Vậy tại sao lại có quá nhiều svchost.exes phải chạy như vậy?
Nếu bạn đã từng quan sát vào phần Services trong control panel, chắc hẳn bạn sẽ thấy rằng có rất nhiều dịch vụ được Windows yêu cầu. Nếu mỗi một dịch vụ chạy dưới một svchost.exe instance thì lỗi xuất hiện trong một trường hợp có thể làm hỏng toàn bộ Windows… vì vậy chúng được phân tách ra một cách riêng rẽ.
Các dịch vụ này được tổ chức thành các nhóm logic, sau đó một svchost.exe instance sẽ được tạo cho mỗi một nhóm. Cho ví dụ, một svchost.exe instance chạy ba dịch vụ liên quan đến tường lửa. Một svchost.exe instance khác có thể chạy tất cả các dịch vụ có liên quan đến giao diện người dùng và,….
Bạn có thể thực hiện được những gì về nó?
Bạn có thể cắt tỉa các dịch vụ không cần thiết bằng cách vô hiệu hóa hoặc tạm dừng các dịch vụ không thực sự cần thiết. Thêm vào đó, nếu bạn thấy hiệu suất CPU của mình có vấn đề trên một svchost.exe instance thì bạn có thể khởi động lại các dịch vụ đang chạy dưới instance đó.
Vấn đề lớn nhất là phân biệt dịch vụ nào đang được chạy trong một svchost.exe instance nào và đây chính là thứ mà chúng tôi sẽ giới thiệu về cho các bạn trong phần dưới.
Nếu bạn là người thực sự muốn tìm hiểu những gì tôi sẽ giới thiệu ở đây, hãy mở Task Manager và tích vào hộp kiểm "Show processes from all users".
Kiểm tra từ dòng lệnh (Vista hoặc XP Pro)
Nếu bạn muốn thấy dịch vụ nào đang được hỗ trợ bởi một svchost.exe instance nào đó, có thể sử dụng lệnh tasklist từ nhắc lệnh để xem được danh sách các dịch vụ.
tasklist /SVC
Vấn đề với việc sử dụng phương pháp dòng lệnh là bạn không cần nhất thiết biết các tên bí ẩn này ám chỉ những gì.
Kiểm tra trong Task Manager trong Vista
Bạn có thể kích chuột phải vào một svchost.exe process nào đó, sau đó chọn "Go to Service".
Thao tác này sẽ đưa bạn đến được tab Services, nơi chứa các dịch vụ đang chạy trong svchost.exe process đó:
Thứ thú vị ở đây trong cách thực hiện này là bạn có thể thấy được tên đích thực trong cột mô tả (Description), vì vậy có thể vô hiệu hóa dịch vụ nếu bạn không muốn nó chạy.
Sử dụng Process Explorer trong Vista hoặc XP
Bạn có thể sử dụng tiện ích Process Explorer từ Microsoft/Sysinternals để xem dịch vụ nào đang chạy như một phần của svchost.exe process.
Di chuột qua một trong các process đó, bạn sẽ thấy xuất hiện một danh sách popup của tất cả các dịch vụ:
Hoặc bạn có thể kích đúp vào một svchost.exe instance nào đó và chọn tab Services, đây chính là nơi bạn có thể stop một trong các dịch vụ.
Vô hiệu hóa các dịch vụ
Trước đây, Microsoft đã chuyển tất cả các chức năng từ các dịch vụ Windows bên trong vào các file .dll thay cho các file .exe. Từ bối cảnh lập trình thì cách thực hiện này sẽ cho phép tái sử dụng lại… tuy nhiên vấn đề phát sinh ở đây là bạn không thể khởi chạy file .dll trực tiếp từ Windows mà nó cần phải được load từ một file thực thi .exe. Chính vì vậy svchost.exe process ra đời.
Vậy tại sao lại có quá nhiều svchost.exes phải chạy như vậy?
Nếu bạn đã từng quan sát vào phần Services trong control panel, chắc hẳn bạn sẽ thấy rằng có rất nhiều dịch vụ được Windows yêu cầu. Nếu mỗi một dịch vụ chạy dưới một svchost.exe instance thì lỗi xuất hiện trong một trường hợp có thể làm hỏng toàn bộ Windows… vì vậy chúng được phân tách ra một cách riêng rẽ.
Các dịch vụ này được tổ chức thành các nhóm logic, sau đó một svchost.exe instance sẽ được tạo cho mỗi một nhóm. Cho ví dụ, một svchost.exe instance chạy ba dịch vụ liên quan đến tường lửa. Một svchost.exe instance khác có thể chạy tất cả các dịch vụ có liên quan đến giao diện người dùng và,….
Bạn có thể thực hiện được những gì về nó?
Bạn có thể cắt tỉa các dịch vụ không cần thiết bằng cách vô hiệu hóa hoặc tạm dừng các dịch vụ không thực sự cần thiết. Thêm vào đó, nếu bạn thấy hiệu suất CPU của mình có vấn đề trên một svchost.exe instance thì bạn có thể khởi động lại các dịch vụ đang chạy dưới instance đó.
Vấn đề lớn nhất là phân biệt dịch vụ nào đang được chạy trong một svchost.exe instance nào và đây chính là thứ mà chúng tôi sẽ giới thiệu về cho các bạn trong phần dưới.
Nếu bạn là người thực sự muốn tìm hiểu những gì tôi sẽ giới thiệu ở đây, hãy mở Task Manager và tích vào hộp kiểm "Show processes from all users".
Kiểm tra từ dòng lệnh (Vista hoặc XP Pro)
Nếu bạn muốn thấy dịch vụ nào đang được hỗ trợ bởi một svchost.exe instance nào đó, có thể sử dụng lệnh tasklist từ nhắc lệnh để xem được danh sách các dịch vụ.
tasklist /SVC
Vấn đề với việc sử dụng phương pháp dòng lệnh là bạn không cần nhất thiết biết các tên bí ẩn này ám chỉ những gì.
Kiểm tra trong Task Manager trong Vista
Bạn có thể kích chuột phải vào một svchost.exe process nào đó, sau đó chọn "Go to Service".
Thao tác này sẽ đưa bạn đến được tab Services, nơi chứa các dịch vụ đang chạy trong svchost.exe process đó:
Thứ thú vị ở đây trong cách thực hiện này là bạn có thể thấy được tên đích thực trong cột mô tả (Description), vì vậy có thể vô hiệu hóa dịch vụ nếu bạn không muốn nó chạy.
Sử dụng Process Explorer trong Vista hoặc XP
Bạn có thể sử dụng tiện ích Process Explorer từ Microsoft/Sysinternals để xem dịch vụ nào đang chạy như một phần của svchost.exe process.
Di chuột qua một trong các process đó, bạn sẽ thấy xuất hiện một danh sách popup của tất cả các dịch vụ:
Hoặc bạn có thể kích đúp vào một svchost.exe instance nào đó và chọn tab Services, đây chính là nơi bạn có thể stop một trong các dịch vụ.
Vô hiệu hóa các dịch vụ
Mở
services từ phần administrative tools của Control Panel,hoặc đánh services.msc
vào hộp thoại run hoặc tìm kiếm trong menu start.Tìm dịch vụ trong danh sách mà
bạn muốn vô hiệu hoa, sau đó kích đúp vào nó hoặc kích phải vào và chọn
properties
Thay đổi Startup Type thành Disabled, sau đó kích nút Stop để stop nó ngay lập tức.
Bạn cũng có thể sử dụng nhắc lệnh để vô hiệu hóa dịch vụ nào đó. Trong lệnh này "trkwks" là tên dịch vụ từ hộp thoại trên, tuy nhiên nếu bạn quay trở lại lệnh tasklist ở phần đầu của bài này thì bạn sẽ thấy nó nằm ở đây.
sc config trkwks start= disabled
Hy vọng được bài viết này sẽ giúp ích nhiều cho các bạn,Kythuatpc.net chúc các bạn vui vẻ!
(nguồn:thuthuatpc/admin/ Howtogeek )
Đọc thêm Tìm hiểu về svchost.exe