اگر تا به حال به تسک منیجر ویندوز خود نگاهی انداخته باشید، ممکن است با دیدن تعداد زیاد پروسه‌های در حال اجرای svchost.exe تعجب کرده باشید. شما نمی‌توانید آن‌ها را متوقف(kill) کنید و البته نمی‌توانید آن‌ها را استارت کنید. خب، این svchost.exe وقعا چیست؟

پروسه‌ی svchost.exe چیست؟

پاسخ این سوال طبق گفته‌ی مایکروسافت این است:
«svchost.exe یک پروسه‌ی عمومی میزبان(هاست) است برای سرویس‌هایی که از طریق dllها اجرا می‌شوند.»

اما خب، این تعریف کمک چندانی به ما نمی‌کند. چندی قبل، مایکروسافت شروع به تغییر بیشتر عملکردهای ویندوز برپایه‌ی سرویس‌های داخلی خود ویندوز(که از طریق فایل‌های exe اجرا می‌شدند) نمود که به جای این از فایل‌های DLL استفاده کنند. از دید برنامه‌نویسی، این کار باعث می‌شود تا کد ما قابلیت استفاده چندباره را داشته باشد و همچنین به روز باشد. مشکل این است که نمی‌توان یک فایل DLL را همان‌طور که یک فایل اجرایی را باز می‌کنیم، باز کرد. درعوض، یک پوسته که از طریق فایل‌های اجرایی بارگذاری می‌شود، مسئول میزبانی(هاست) این سرویس‌های DLL است. و این طور شد که پروسه‌ی سرویس هاست (svchost) متولدشد.

خب حالا چرا تعداد زیادی پروسه svchost در حال اجراست؟

اگر تا به حال نگاهی به قسمت سرویس‌ها در کنترل پنل انداخته باشید، احتمالا متوجه شده‌اید که ویندوز به سرویس‌های زیادی نیاز دارد. اگر تمام این سرویس‌ها بخواهند از یک svchost استفاده کند، اشکال در یکی از سرویس‌ها می‌تواند به صورت بالقوه باعث از کار افتادن کل ویندوز شود. به همین خاطر این svchost ها جداشده‌اند و سرویس‌ها از svchost های مختلف استفاده می‌کنند.
سرویس‌هایی که به نوعی با یکدیگر ارتباط دارند در گروه‌های منطقی سازمان‌دهی شده‌اند و برای هر یک از این گروه‌ها یک نمونه(instance) از svchost اجرا می‌شود. مثلا یک پروسه‌ی svchost از سه سرویس مرتبط با فایروال میزبانی می‌کند. یا یک پروسه svchost دیگر که تمام سرویس‌های مربوط به رابط کاربری را میزبانی می‌کند و به همین ترتیب. به عنوان مثالی دیگر، در عکس پایین می‌بینید که یک svchost چند سرویس مرتبط با شبکه را اجرا می‌کند و دیگری سرویس‌های مرتبط با RPC را.
پروسه svchost

با همه این تفاصیل آیا نیاز هست تا من کاری انجام دهم؟

اگر صادقانه بخواهیم بگوییم، نه خیلی. در زمان ویندوز xp وقتی کامپیوترها منابع بسیار کمتری داشتند و سیستم‌عامل‌ها بهینه نبودند، معمولا متوقف کردن سرویس‌های غیرضروری پیشنهاد می‌شد.اما امروزه غیرفعال کردن سرویس‌ها را دیگر توصیه نمی‌کنیم. کامپیوترهای مدرن از حافظه‌ی بالا و پردازشگرهای پر قدرت و همچنین سیستم‌عامل‌های مدرنی برخوردارند که خود، سرویس‌ها را مدیریت می‌کنند و بنابراین متوقف کردن سرویس‌ها تاثیر چندانی نخواهد داشت.
حال اگر متوجه شوید که یک نمونه svchost با بالا بردن مصرف سی‌پی‌یو یا رم در حال ایجاد مشکل است، می‌توانید سرویس مشخصی را که در ایجاد مشکل دخیل است شناسایی کنید. این باعث می‌شود تا متوجه شوید مشکل از کجاست تا مراحل عیب‌یابی را آغاز کنید. برای این که بدانیم سرویس مورد نظر توسط کدام نمونه از svchost میزبانی می‌شود چند راه وجود دارد. می‌توان از تسک منیجر و نرم‌افزار دیگری به نام Proccess Explorer استفاده کرد.

بررسی سرویس‌های مرتبط با تسک‌منیجر

اگر از ویندوز 8 یا 10 استفاده می‌کنید، پروسه‌ها در تب Proccesses تسک‌منیجر با نام کامل نمایش داده می‌شوند.اگر پروسه‌ای از پروسه‌های دیگری میزبانی کند، به سادگی می‌توان این پورسه‌ها را با باز کردن پروسه میزبان مشاهده کرد. این باعث می شود تا به راحتی تشخیص دهیم تا کدام پروسه به یک svchost مشخص تعلق دارد.
مشخص کردن زیرپروسه‌های svchost

با کلیک راست بر روی هر سرویس، می‌توان آن را متوقف کرد، در سرویس‌های کنترل‌پنل مشاهده کرد یا حتا برای به‌دست آوردن اطلاعاتی درباره‌ آن به صورت آنلاین جست‌و‌جو نمود.
متوقف کردن سرویس ویندوز

اگر از ویندوز 7 استفاده می‌کنید، این موضوع متفاوت‌تر خواهد بود.تسک‌منیجر ویندوز ۷ پروسه‌ها را مثل بالا گروه‌بندی نمی‌کند و نام کامل پروسه‌ها را نشان نمی‌دهد و فقط تمام نمونه‌های در حال اجرای svchost را نمایش می‌دهد. برای مشخص کردن زیرپروسه‌های svchost باید قدری بیشتر جست‌و‌جو کنید.
در تب Proccesses تسک‌منیجر ویندوز 7، روی یک svchost کلیک راست کنید و گزینه‌ی Go to Services را اتخاب نمایید.
svchost در ویندوز ۷

این کار باعث می‌شود تا به تب Services رفته و تمام سرویس‌هایی که از svchost مشخص شما استفاده می‌کنند به صورت انتخاب شده دربیایند.
تب سرویس  تسک منیجر در ویندوز 7

به این صورت می‌توانید نام کامل سرویس‌ها را در ستون Description مشاهده نموده و اگر سرویس را نیاز ندارید غیرفعال کنید و یا روال عیب‌یابی را شروع نمایید.

بررسی سرویس های مرتبط با Proccess Explorer

مایکروسافت علاوه بر تسک‌منیجر، ابزار پیشرفته‌ی دیگری را در بسته Systinternals برای کار با پروسه‌ها فراهم نموده. کافیست Proccess Explorer را دانلود و اجرا کنید. این ابزار پرتابل است و نیاز به نصب آن نیست. پراسس اکسپلورر تمام ویژگی‌های پیشرفته برای مدیریت پروسه‌ها را دارد.
برای هدفی که ما در این‌جا داریم، پراسس اکسپلورر همان گروه‌بندی پروسه‌ها را زیر یک svchost انجام می‌دهد. آن‌ها با نام فایل لیست شده‌اند ولی می‌توان نام کامل را نیز در ستون Description مشاهده کرد. همچنین با بردن اشاره‌گر موس روی هر نمونه از svchost یک پاپ‌آپ باز می‌شود و تمام زیرپروسه‌ها را نمایش می‌دهد.
نرم‌افزار پراسس اکسپلورر

آیا این پروسه می‌تواند یک ویروس باشد؟

خود پروسه‌ها از اجزای ویندوز هستند. اگرچه ممکن است یک ویروس جایگزین این پروسه شده باشد؛ اما احتمال کمی دارد. برای اطمینان می‌توانید روی svchost در تسک‌منیجر کلیک راست کرده و گزینه‌ی open file location را انتخاب نمایید. این کار باعث می‌شود محل نگهداری فایل پروسه مورد نظر در کامپیوتر باز شود. اگر پنجره‌ای که باز می‌شود در مسیر C:\Windows\System32 باشد، تقریبا می‌توانید مطمئن باشید که ویروس نیست. برای این که 100 درصد هم اطمینان حاصل کنید، می‌توانید از آنتی ویروس کسپرسکی برای اسکن فایل مورد نظر استفاده نمایید.

+ منبع