スポンサーリンク

Windows 10でCDPUserSvc_XXXXXが暴走するのでスクリプトで強制終了させる

PC

毎回では無いのですが、Windows 10を起動して暫く経つと、ずっとPCのファンが唸り続けていることがありました。

タスクマネージャーで状況を確認すると、”CDPUserSvc_#####”というプロセスがCPUリソースを3割以上消費し続けていることが原因でした。

サービスの正体と対策方法についての調査

プロセスの正式名称は”Connected Device Platform”で、設定アプリが機能するために必要なプロセスのようです。

無効にすると、ワイヤレスアダプタ(Bluetooth、NFCなど)を使用するすべてのWindowsストアアプリは実行に失敗するとのこと。

What is the CDPUserSvc service?
In my machine there's a service called CDPUserSvc_1bf5729. The description says Failed to Read Description. Error Code: 15100 The path to the executable is ...

上記サイトには対策としてレジストリを書き換える方法が記載されています。これを実行すると恒久的に無効に出来そうですが、私の環境では毎回問題が発生するわけではない為、この作業は保留としました。

別の対策方法として、コマンドプロンプトでWindowsの修復を試す方法が見つかりました。

Connected Devices Platform: Excessive CPU Usage
According to my machine's task manager, SERVICE HOST: CONNECTED DEVICES PLATFORM USER SERVICE is consuming about 40% to 50% CPU usage. (Don't know if I stated t...

コマンドプロンプトで下記コマンドを実行します。

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回まで実行した後、終了します。


プロセスを強制終了しても、私の環境では特に支障無い状態ですが、異なる個々の環境では何らかの別の問題が発生する可能性がありますので、その点のみご承知頂いた上で自己責任にて実行して下さい。