UnistackSvcGroupとは何か

Windows10が稼働する、2台のPCで以下のダイアログが表示される事象が発生した。
(いずれもバージョンはVersion 10.0.14393)

▲svchost.exeのエラー

▲svchost.exeのエラー

以降の方法はレジストリを変更するため、失敗するとシステムを起動できなくなる
恐れがある。また、原稿執筆の環境下でのみ発生する事象であることも否定できない
ことから、あくまで参考情報である。自己責任にて実施してほしい。

エラーしたのはsvchost.exeのためWindowsのサービスが原因であることは分かる。
イベントビューアーにも同様のエラーが記録されていた。
そこでタスクマネージャーを使用して、原因を調べることにした。
まずは、「ユーザー」タブにて実行しているアプリケーションを表示することにした。

▲Unistackサービスグループ

▲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を停止

▲CDPUserSvcを停止

この状態で冒頭のエラーメッセージは表示されなくなった。
更に、上図にて実行中となっている、他の_xxxxxの値を持つ4つのサービスに対して同様にレジストリの値を変更すると、下図のようになった。

▲UnistackSvcGroupを停止

▲UnistackSvcGroupの一部を停止

この方法で実行中のUnistackSvcGroupの一部を停止し、エラーメッセージの表示を消去することができた。
今のところ問題は発生していないが、起因すると思われる事象があれば本サイトにて公開していく。

コメントを残す

メールアドレスが公開されることはありません。