web-dev-qa-db-ja.com

svchostとは何ですか?また、svchostの複数のインスタンスが実行されているのはなぜですか?

デスクトップでは6つのインスタンスが実行されており、管理しているサーバーではおそらく10個のインスタンスが実行されています。これは何ですか、それはシステム機能に不可欠ですか?

27
jldugger

svchost、Windowsでのサービスのホスト [〜#〜] kb [〜#〜] を参照してください。 Process Explorer を使用すると、特定のプロセス内で実行されているサービスを確認できます。

16
Rob Haupt

Windowsの多くの実行コンポーネントはサービスとして実装されています(マシン上のすべてのサービスControl Panel > Administrative Tools > Servicesを参照してください)。これらは、バックグラウンドで実行される特殊なプログラムです。ログインしているユーザーではなく、オペレーティングシステム自体によって開始されます。

ほとんどのサービスは、スタンドアロンの実行可能ファイル(EXEファイル)ではなく、実行中のプロセスで使用できるライブラリ(DLL)に実装されています。名前が示すように、Svchostまたは「サービスホスト」は、これらのDLLを実行するためのWindowsの標準的な実行可能ファイルです。 svchost.exeファイルは%systemroot%\system32ディレクトリにあります。

Svchostのどのインスタンスがどのサービスを実行しているかを知りたい場合は、次のように入力します。

 tasklist /svc /fi "IMAGENAME eq svchost.exe"

コマンドラインコンソール(cmd)。

スクリーンショットを作成したマシンでは、svchostのインスタンスの1つが、たとえば21の異なるサービスを実行しています。 Microsoftのドキュメント によると、このサービスのグループ化により、制御が向上し、デバッグが容易になります。

alt text

Svchost.exeグループは、次のレジストリキーで識別されます。

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost

ヒント(Windows Vista、Windows 7、またはWindows Server 2008を実行している場合):タスクマネージャーを開き、特定のsvchost.exeプロセスを右クリックして、[サービスに移動]オプションを選択できます。 Servicesタブが表示され、選択したsvchost.exeプロセスで実行されているすべてのサービスがマークされます。

Microsoftのダウンロードセンターには非常に興味深いドキュメントがあります。

Microsoft Windows Server 2003システムサービスリファレンス

このドキュメントには、Windows Server 2003ファミリのオペレーティングシステムで利用可能なすべてのサービスの概要が含まれています。サービスは、表示名のアルファベット順にリストされています。各サービスの説明に続いて、サービスに関する主要な情報を表に示します。

すべてのWindowsサービスがすべての詳細とともにリストされます。たとえば、ターミナルサービスサービスの実行可能ファイル名が

 svchost.exe -k termsvcs 
20
splattne

Svchostは「サービスホスト」の略です。マシン上のほとんどのサービスを実行し続けます。独自の.exeファイルで自分自身をホストするいくつかのサービスがありますが、Windowsのサービスのほとんどは、svchost.exeプロセス内でホストする必要があります。マシン上のサービスは、ネットワーク、RpCサーバー、オーディオ、イベントログなどの重要なものを処理します。

「スタート」->「実行」に「services.msc」と入力して、マシンで実行しているサービスを表示します。誰かが不必要だと思われる場合は、サービスを停止できます。

「tasklist/SVC」と入力して、さまざまなsvchost.exeファイルによってホストされているサービスを確認します。

7
Frode Lillerud

以下は、svchost.exeプロセスでホストされているすべてのサービスを出力するPowerShellの1行です。

PS>get-process svchost | % {get-wmiobject win32_service -filter "processid=$($_.id)"} | format-table processid,name,displayname,state,status -auto

processid name          displayname                               state   status
--------- ----          -----------                               -----   ------
      316 HTTPFilter    HTTP SSL                                  Running OK
     1328 DcomLaunch    DCOM Server Process Launcher              Running OK
     1328 TermService   Terminal Services                         Running OK
     1392 RpcSs         Remote Procedure Call (RPC)               Running OK
     1528 AudioSrv      Windows Audio                             Running OK
     1528 BITS          Background Intelligent Transfer Service   Running OK
     1528 Browser       Computer Browser                          Running OK

ワンライナーの短いバージョンは次のようになります。

gps svchost | % {gwmi win32_service -f "processid=$($_.id)"} | ft proc*,name,disp*,stat* -auto
1
aleksandar

この記事は役立つかもしれません: http://www.gfi.com/blog/exploring-svchostexe-part-1/

0
Gilbert