プログラムではなくホスト
WindowsのサービスはDLLであり、DLLは自分自身を起動できません。棲むためのホスト プロセスが必要です。svchost.exeがそのホストです。1つのインスタンスが1つ以上のサービスDLLを読み込んで実行するため、svchostを無差別に終了すると、その中に棲むサービスが道連れになります。歴史的には、RAMが貴重だった時代にメモリを節約するため、サービスは特権レベルごとに共有ホストへグループ化されました。その代償は、あるサービスがクラッシュすると同居人を巻き添えにできたことです。
Windows 10 Creators Update以降、RAMが3.5 GBを超えるマシンではサービスが分離され、各サービスが専用のsvchostインスタンスを持つようになりました。だから現代のPCには何十ものsvchostが表示され、個数そのものには何の意味もありません。インスタンスが多いのは肥大化ではなく隔離です。クラッシュしたサービスは自分だけを落とし、どれが責めを負うべきかを実際に確認できます。
どのサービスかを確認する方法
最速の確認はタスク マネージャー自身です。プロセス表示でsvchostのエントリーを展開すると、直下にサービス名が現れます。コマンド ラインはさらに広く見せてくれます。tasklist /svcはすべてのsvchostについてPIDとその中のサービスを一覧表示し、覚えておく価値があるのはこのバージョンです。Process Explorerはホストのコマンド ラインも表示し、-kのグループ名(例:svchost.exe -k netsvcs)から、そのホストがどの起動グループ用に作られたかが分かります。
- タスク マネージャー → プロセス: svchostのエントリーを展開し、直下のサービス名を読む
- タスク マネージャー → 詳細とサービス タブ: PID列を突き合わせてホストとサービスを対応づける
- ターミナルでtasklist /svc: svchostのPIDごとにサービスを表示、ホストごとに1ブロック
- Process Explorer: コマンド ライン列に-kグループが表示される、例: svchost.exe -k netsvcs
- Process Explorerのサービス ペイン: 各ホストが実行している内容をライブ表示
svchostの負荷が本物の仕事のときと、偽物のとき
svchost内の高いCPUやディスク使用は、ほとんど常に大声で仕事をしているサービスです。オーケストレーターのUsoSvcとセットのWindows Update(wuauserv)、配信の最適化(DoSvc)、サインイン後にスタンバイ メモリを再構築するSysMain、ネットワーク変更後の診断ポリシー サービス(DPS)などです。サービスを特定すれば、待つべきか、更新を一時停止すべきか、根本の問題を追うべきかが分かります。詰まった更新機構に対する正直な第一手は再起動です。とりわけWindows Updateの負荷は自己抑制的で、パッチ適用後の1〜2時間だけ急上昇し、次のラウンドまで消えます。
本物のsvchost.exeはC:\Windows\System32にあり、Microsoftの署名が付いています。ユーザー プロファイルやTemp、AppDataから実行されているsvchost.exeという名前の何かは、見知った名前を着たマルウェアです。Windows自身を疑う前に確認してください。プロセスを右クリック → ファイルの場所を開く、あるいはタスク マネージャーの詳細タブで「イメージ パス名」列を追加します。パスと署名で10秒で決着がつきます。
よくある質問
タスク マネージャーにsvchost.exeが大量にあるのはなぜですか?
Windows 10バージョン1703以降、RAMが3.5 GBを超えるPCでは各サービスが専用のsvchostインスタンスを持ちます。数の多さは問題ではなく、隔離を反映しています。
タスク マネージャーでsvchost.exeを終了しても安全ですか?
安全ではありません。そのホスト内で動いているWindowsサービスを終了させることになります。まずサービス名を特定し、ホストを撃つのではなく、そのサービス自体に対処してください。
購入前にライセンスの内容をご確認ください。
一度限りの 30 分試用では基本ツールを利用できます。PRO 機能は有料ライセンスを有効にするまでロックされています。
次に読む記事
お問い合わせ: [email protected]