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