چگونه سرویس های ضروری و غیر ضروری ویندوز را مدیریت نموده و به این طریق منابع سیستم را آزاد کنیم.
اگر شما هم از اینکه تعداد زیادی Processes با نام svchost.exe در سیستمتان در حال اجرا می باشد و نیز نمی توانید به اجرای آنها پایان دهید و یادتان هم نمی آید که شما آنها را اجرا کرده باشید، شگفت زده شده اید، حتماً این مقاله را بخوانید.
svchost.exe چیست؟
طبق گفته مایکروسافت: "svchost.exe نام نوعی process میزبان برای سرویس هایی است که از درون fileهای dynamic-link libraries)DLL) اجرا می شوند".
در حقیقت svchost.exe نامی عمومی برای عملکردهایی است که از طریق DLLها و یا از داخل آنها اجرا می شوند. فایل svchost.exe که در پوشه SystemRoot%\System32% قرار دارد، در هنگام آغاز اجرای ویندوز، قسمت Services رجیستری را چک می کند و لیستی از سرویس هایی را که باید اجرا شوند، ایجاد می کند. موارد متعددی از svchost می توانند همزمان با هم اجرا شوند که هر کدام از آنها شامل گروهی خاص از سرویس ها می شود. پس به همین دلیل، سرویس های جداگانه می توانند همزمان و فارغ از اینکه svchost کی اجرا شده باشد، با هم اجرا شوند تا روند بالا آمدن ویندوز تسریع گردد. در ضمن این شیوه گروه بندی سرویس ها، باعث ایجاد کنترل بهتر و Debug سریعتر می شود.
واقعیت امر این است که از مدتها قبل، مایکروسافت شروع به انتقال تمامی توابع عملیاتی سرویس های داخلی ویندوز به داخل فایل های dll. به جای فایل های exe. (فایل های dll. همان توابع کتابخانه ای ویندوز می باشند) نمود. یعنی به جای اینکه این توابع در فایل های exe. باشند، آنها را در فایل های dll. قرار داد تا در صورت نیاز، فراخوانی شوند. نگاه کردن به این موضوع از دید یک برنامه نویس، این نتیجه را می دهد که یک تابع می تواند بارها مورد استفاده قرار گیرد... ولی مشکل اینجاست که شما نمی توانید یک فایل dll. را به طور مستقیم از داخل ویندوز اجرا کنید، بلکه باید توسط یک برنامه در حال اجرا (exe.) فراخوانی شود. بدینسان svchost.exe متولد شد!
چرا تعداد زیادی svchost.exe در حال اجرا وجود دارد؟
اگر یک نگاهی به قسمت سرویس های ویندوز (از طریق منوی Start و در Run تایپ کنید services.msc) بیاندازید، احتمالاً متوجه آن می شوید که فعالیت و کارایی ویندوز، مستلزم داشتن سرویس های زیادی می باشد. به عبارتی اگر همه سرویس های تحت نظر، تنها با یک svchost.exe اجرا شوند، در نتیجه خرابی و از کار افتادگی یکی از آنها، باعث از کار انداختن تمامی سرویس های ویندوز می شود!... بنابراین این سرویس ها از هم تفکیک شده اند.
لازم به ذکر است، این سرویس ها در گروه های منطقی دسته بندی می شوند، و سپس یک svchost.exe برای هر گروه ایجاد می شود. برای مثال یک svchost.exe، سرویس هایی را که به firewall مربوط می شوند، اجرا می کند و دیگری تمامی سرویس هایی را که به رابط کاربر مربوط می شوند، به اجرا در می آورند. اما فراموش نکنید که برخی از این سرویس ها مورد نیاز شما نبوده و فقط به عنوان یک سربار، سبب سنگین شدن بی دلیل پیکره ویندوز و به همان نسبت کندن شدن آن می شوند.
حالا ما چه کارهایی می توانیم انجام بدهیم؟
برای بالا بردن راندمان کاری کامپیوتر و آزاد کردن منابع سیستمی تا حد ممکن، شما می توانید سرویس هایی را که اصلاً نیازی به اجرای آنها ندارید، متوقف کنید و یا کاملاً آنها را از کار بیاندازید. در واقع اگر شما متوجه شده اید که مقدار زیادی از CPU Usage به یک svchost.exe اختصاص داده شده، می توانید سرویسی را که تحت نظر این svchost.exe کار می کند، restart کنید. البته برای انجام این کار، مشکل اصلی اینجاست که ما چگونه می توانیم تشخیص دهیم که یک سرویس معین، تحت نظر کدام یک از svchost.exeها کار می کند؟ که در ادامه به این مورد می پردازیم.
از طریق Command Line (ویستا یا اکس پی)
اگر می خواهید مشاهده کنید که چه سرویس هایی توسط یک svchost.exe خاص میزبانی می شوند، می توانید از دستور Tasklist/SVC در محیط Command Line یا همان CMD استفاده کنید تا لیست سرویس ها را ببینید. اما مشکل استفاده از Command Line این است که نمی توان فهمید این حروف رمزی، دقیقاً به چه سرویس هایی اشاره می کنند.
استفاده از Task Manager ویندوز ویستا
شما می توانید روی یک svchost.exe خاص راست کلیک کنید و سپس گزینه "Go to Service" را انتخاب کنید.
بدین طریق تب Services فعال می شود و سرویس هایی که تحت نظر این svchost.exe کار می کنند، به حالت انتخاب در می آیند.
در اینجا شما می توانید نام واقعی هر سرویس را در ستون Description مشاهده کنید، و سپس با دانستن نام و کاربرد مورد نظر آن سرویس، در صورتی که به آن نیاز دارید، آن را به حالت Disable در آورید.
استفاده از برنامه کاربردی Process Explorer
همچنین می توانید از برنامه بسیار عالی Process Explorer برای مشاهده اینکه چه سرویس هایی به عنوان قسمتی از svchost.exe در حال اجرا هستند، استفاده کنید. البته این برنامه، از اجزاءسیستم عامل ویندوز نیست و شما می بایست آن را دانلود و بر روی ویندوز نصب کنید. پس از اجرا و ورود به محیط اصلی برنامه، حال اگر ماوس خود را روی هر process نگه دارید، لیستی باز می شود که نام تمامی سرویس های زیر نظر آن را نشان می دهد.
و یا اینکه روی یکی از svchost.exe دو بار کلیک کنید و در پنجره باز شده، به تب Services بروید و Service مورد نظر را با زدن دکمه Stop متوقف کنید.
مشخصات و نشانی دانلود این برنامه:
(حجم Process Explorer 11.20 (1.53MB
License: Free
link:http://www.download.com/Process-Explorer/3000-2094_4-10223605.html
از کار انداختن سرویس ها
حال فرض بر این است که با روش های توضیح داده شده فوق، شما توانستید متوجه شوید که کدام svchost قابل از کار انداختن است. حال برای از کار انداختن و در واقع غیر فعال کردن هر svchost، در قسمت Run تایپ کنید. services.msc و سپس در پنجره باز شده، سرویس مورد نظر خود را برای غیر فعال کردن انتخاب کنید.
نکته: اگر گزینه Startup Type را به حالت Disabled تغییر دهید، در راه اندازی بعدی سیستم، این سرویس اجرا نمی شود و اگر دکمه Stop را کلیک کنید، آن سرویس در همان لحظه متوقف می شود.
بدین ترتیب شما می توانید با بهره گیری از آنچه در این نوشتار، بدانها اشاره شد، با درک بهتری از سرویس های مورد نیاز ویندوز و شناخت عناصری که می توان آنها را غیر فعال نموده و بدینوسیله بار پردازشی و تخصیص منابع را بر روی سیستم کاهش داد، عملیات بهینه سازی سیستم خود را در رابطه با پردازش ها و سرویس های غیر ضروری، به نحو احسن انجام دهید.
منبع: ماهنامه دانش و کامپیوتر، شماره ی 75