デュアルコアPentiumを搭載したWin 7 32ビットシステムを搭載したラップトップを持っています(2010ラップトップです)。正常に動作することもありますが、通常は100%のCPU負荷でアイドル状態になります。 CPUは、2つのsvchost.exeプロセス(それぞれ50%)によって消費されます。私が理解している限り、これはサービスホストです。原因となっているサービスを特定する方法はありますか?
注意:これはセーフモードでも発生します。
Svchost.exeのインスタンスが複数のシステムサービスをホストしているため、ここでは、それぞれのサービスをsvchost.exeの独自のインスタンスに分離して、どのサービスがCPUを消費しているかを調べます。
手順は次のとおりです。
タスクマネージャーを使用して、CPUの降順で並べ替えられたすべてのプロセスを表示し、CPUを消費するプロセスのPIDをマークします。
コマンドプロンプト(cmd)にコマンドを入力しますTasklist /svc /fi "IMAGENAME eq svchost.exe"
Svchost.exeの問題のあるインスタンスをPIDで見つけることができるようになり、右側に、それらがホストするシステムサービスのリストが表示されます。
リスト内の名前ごとに、「管理者として実行」であるコマンドプロンプト(cmd)に次のコマンドを入力します。sc config <name> type= own
(「=」と「所有」の間のスペースに注意してください)
リブート
分離したシステムサービスはそれぞれ、svchost.exeの独自のインスタンスで実行され、タスクマネージャーの[プロセス]タブに表示されます。インスタンスを右クリックして[サービスに移動]を選択し、サービスに直接移動するか、tasklistコマンドを再度使用できます。
詳細については、Microsoftの記事を参照してください。
SVCHOST.EXEトラブルシューティング入門 。
Process Explorer はこれを簡単にします。 64ビットWindows 7 Professionalおよび64ビットWindows 10 Pro上のProcess Explorer v16.20でこれが動作することを確認しました。
CPU
列に高い(または単に測定可能/空白ではない)値を持つsvchost.exe
プロセスを見つけます。 Process
列またはCPU
列で並べ替えると、これに役立つ場合があります。svchost.exe
プロセスを右クリックし、Properties...
を選択します。Threads
]タブを選択します。このプロセスのすべてのスレッドが表示されます。CPU
列で、高い(または、測定可能/非ブランクの)値を持つスレッドを見つけます。 CPU
列で並べ替えると、これに役立ちます。 Service
列には、そのスレッドが実行されているサービスの名前が表示されます。サービス名がよくわからない場合...
タスクマネージャを使用できます。他の方法(コマンドライン、またはWinAPIを使用してプログラムを作成する方法)もありますが、ここでは説明しません。先に進む前に、ユーザーには管理者権限が必要です。
Processesタブ:
Processesタブに戻り、[〜#〜] cpu [〜#〜]列ヘッダーをクリックして、プロセスがCPU消費量順に並べられるようにします(プロセスは昇順/降順で表示される場合があります。クリックするたびに[〜#〜] cpu [〜#〜]順序が切り替わります)、テーブルの上部に2つのプロセスが表示されるまでクリックします。これで、あなたはそれらのコマンドライン(私にはわかりませんが、それらの1つがnetsvcs
(ネットワークサービス)であると感じています)とそれらのPIDを見ることができます。
次に、2つのプロセスをサービスに一致させる必要があります。そのためには、次のいずれかを実行できます。
EDIT:最初に投稿した左手で右頭を引っかくスタイル1ではなく、よりシンプルな(そしてより理にかなった)アプローチを提供するために回答を更新しました。