Windows10が稼働する、2台のPCで以下のダイアログが表示される事象が発生した。
(いずれもバージョンはVersion 10.0.14393)
以降の方法はレジストリを変更するため、失敗するとシステムを起動できなくなる
恐れがある。また、原稿執筆の環境下でのみ発生する事象であることも否定できない
ことから、あくまで参考情報である。自己責任にて実施してほしい。
エラーしたのはsvchost.exeのためWindowsのサービスが原因であることは分かる。
イベントビューアーにも同様のエラーが記録されていた。
そこでタスクマネージャーを使用して、原因を調べることにした。
まずは、「ユーザー」タブにて実行しているアプリケーションを表示することにした。
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の値を持ったサービスは生成されない状態となった。
この状態で冒頭のエラーメッセージは表示されなくなった。
更に、上図にて実行中となっている、他の_xxxxxの値を持つ4つのサービスに対して同様にレジストリの値を変更すると、下図のようになった。
この方法で実行中のUnistackSvcGroupの一部を停止し、エラーメッセージの表示を消去することができた。
今のところ問題は発生していないが、起因すると思われる事象があれば本サイトにて公開していく。