毎回では無いのですが、Windows 10を起動して暫く経つと、ずっとPCのファンが唸り続けていることがありました。
タスクマネージャーで状況を確認すると、”CDPUserSvc_#####”というプロセスがCPUリソースを3割以上消費し続けていることが原因でした。
サービスの正体と対策方法についての調査
プロセスの正式名称は”Connected Device Platform”で、設定アプリが機能するために必要なプロセスのようです。
無効にすると、ワイヤレスアダプタ(Bluetooth、NFCなど)を使用するすべてのWindowsストアアプリは実行に失敗するとのこと。
上記サイトには対策としてレジストリを書き換える方法が記載されています。これを実行すると恒久的に無効に出来そうですが、私の環境では毎回問題が発生するわけではない為、この作業は保留としました。
別の対策方法として、コマンドプロンプトでWindowsの修復を試す方法が見つかりました。
コマンドプロンプトで下記コマンドを実行します。
Sfc.exe /scannow
Dism.exe /online /Cleanup-Image /StartComponentCleanup
Dism.exe /Online /Cleanup-Image /RestoreHealth
再起動した直後は問題ありませんでしたが、何日か経つと問題が再発しました。
強制終了スクリプト
タスクマネージャーからプロセスを右クリックして終了させれば、CPUを延々と消費し続ける問題は解決されますが、厄介なのはプロセスを終了すると数秒後にプロセスが復帰(再起動)することです。しかも、この復帰は数回繰り返される現象が見られます。
毎回手動でプロセスを強制するのは地味に面倒なので、スクリプトに実行させることにしました。
$count = 0
do {
$count++
$proc_id = get-wmiobject Win32_service | where Name -like "CDPUserSvc_*" | select -expand ProcessId
If( ($proc_id -match "^\d+$") -and ($proc_id -ne 0) ){
taskkill /F /PID $proc_id
}
Start-Sleep -Seconds 5
}
until( $count -eq 10 )
上記を”kill_CDPUserSvc.ps1″のような名前で保存し、右クリックして「PowerShell で実行」を選択すると、今回の問題の原因である”CDPUserSvc_”で始まるプロセスを検索し、見つかった際に強制終了されます。そして、この処理を5秒間隔で最大10回まで実行した後、終了します。
プロセスを強制終了しても、私の環境では特に支障無い状態ですが、異なる個々の環境では何らかの別の問題が発生する可能性がありますので、その点のみご承知頂いた上で自己責任にて実行して下さい。