Windows10が稼働する、2台のPCで以下のダイアログが表示される事象が発生した。
(いずれもバージョンはVersion 10.0.14393)
▲svchost.exeのエラー
以降の方法はレジストリを変更するため、失敗するとシステムを起動できなくなる
恐れがある。また、原稿執筆の環境下でのみ発生する事象であることも否定できない
ことから、あくまで参考情報である。自己責任にて実施してほしい。
エラーしたのはsvchost.exeのためWindowsのサービスが原因であることは分かる。
イベントビューアーにも同様のエラーが記録されていた。
そこでタスクマネージャーを使用して、原因を調べることにした。
まずは、「ユーザー」タブにて実行しているアプリケーションを表示することにした。
▲Unistackサービスグループ
svchost.exeのエラーダイアログを消去すると、Unistackサービスグループも消去
されるため、このアプリケーションが何なのか突き詰めることにする。
上記画面にて当該アプリケーションを右クリックし、「詳細の表示」を選択して、
「詳細」タブにてプロセスイメージ名を表示すると以下の表示が選択された。
▲詳細タブのプロセス名(ユーザー名は加工済み)
さらにそのsvchost.exeどのサービスから呼ばれているかを調べるため、当該のプロセスイメージ名を右クリックし、「サービスの表示」を選択した。
▲当該のサービス名
これらの操作から、原因はPID4588で動作する5つのサービスが原因であることが分かった。
これらのサービスはUnistackSvcGroupに属しており、サービス名の末尾に_xxxxxの値が
付与されている。
さらに_xxxxxの値のないサービス名も同じUnistackSvcGroupに存在する。
(例としてCDPUserSvcとCDPUserSvc_c247dといった状態である)
この_xxxxxの値は常に変化するようである。
これらの起動を抑止するため、サービスにて無効にしようとしたが操作を完了することができず、GUIからの操作は失敗した。
そこでレジストリエディタを使用して直接当該サービスの状態を制御する
StartというDWORD値のキーに無効を意味する「4」を10進にて
設定してみたものの、再起動後には平然と値が戻っていることが分かった。
そこで、_xxxxxの値のないUnistackSvcGroupに属するサービスのキーと通常のサービスのキーを比較したところTypeというDWORD値のキーの値が異なっていた。
通常のサービスは「32」なのに対し、_xxxxxの値のないUnistackSvcGroupに属するサービスでは「96」という値を示していた。
No |
グループ名 |
サービス名 |
TypeのDWORD値(初期値) |
1 |
LocalService |
CDPSvc(他のサービスの例) |
32 |
2 |
UnistackSvcGroup |
CDPUserSvc |
96 |
3 |
UnistackSvcGroup |
PimIndexMaintenanceSvc |
96 |
4 |
UnistackSvcGroup |
UnistoreSvc |
96 |
5 |
UnistackSvcGroup |
UserDataSvc |
96 |
6 |
UnistackSvcGroup |
OneSyncSvc |
96 |
7 |
UnistackSvcGroup |
OneSyncSvc_xxxxx(例) |
224 |
よって、TypeのDWORD値のキーを_xxxxxの値のないUnistackSvcGroupに属するサービス(下図のCDPUserSvc)で値を「32」に設定することした。
▲レジストリの値を変更
すると、CDPUserSvc_xxxxxの値を持ったサービスは生成されない状態となった。
▲CDPUserSvcを停止
この状態で冒頭のエラーメッセージは表示されなくなった。
更に、上図にて実行中となっている、他の_xxxxxの値を持つ4つのサービスに対して同様にレジストリの値を変更すると、下図のようになった。
▲UnistackSvcGroupの一部を停止
この方法で実行中のUnistackSvcGroupの一部を停止し、エラーメッセージの表示を消去することができた。
今のところ問題は発生していないが、起因すると思われる事象があれば本サイトにて公開していく。