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の一部を停止し、エラーメッセージの表示を消去することができた。
今のところ問題は発生していないが、起因すると思われる事象があれば本サイトにて公開していく。

Windows10 のオーナー情報

以前のWindows(XPやNTなど)はセットアップ時にオーナー情報を指定することができた。

※本項でのオーナー情報とはWindowsのバージョン情報ダイアログに表示される、ユーザー固有の名前と組織名称を指す。

しかし、Windows10ではセットアップ時にそういったダイアログは表示されないない
ため設定する機会がない。

そこでレジストリでオーナー情報を入力する。
以下のキーの文字列値を修正する。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"RegisteredOrganization"="Organization"
"RegisteredOwner"="Owner"

変更後、Windowsのバージョン情報ダイアログを表示すると、入力した値が即座に反映
される。

↑Windowsのバージョン情報ダイアログ

↑Windowsのバージョン情報ダイアログ

レジストリの変更は自己責任で

レジストリファイルの取り込みをコマンドプロンプトで行う場合の注意点

コマンドプロンプトからレジストリファイル(.reg)を取り込もうとするときに挙動が異なったのでメモしておく。

コマンドプロンプト

▲異なる結果を示すコマンドプロンプト

同じレジストリファイル(test.reg)をインポートする操作を行おうとしても、上図中、上のコマンドプロンプトではエラー、下のコマンドプロンプトでは正常終了となる。

この違いは一体何か…
タイトルバーを見ると、上は通常のプロンプト、下は管理者として実行されているプロンプトであることがわかる。
これだsign01.gif

おそらくUACが導入されているWindowsではこれを意識しなければならないのだろう。
Windows10ではスタートボタンを右クリックして表示されるメニューからこの2種類のコマンドプロンプトを呼び出せる。

Windows10の右クリックメニュー抜粋

▲Windows10の右クリックメニュー抜粋

[メモ]送るにドライブのショートカットを表示しない

Windows7や8では右クリックメニューの「送る」に自動で光学ドライブやネットワークドライブ(割り当てていた場合)が表示されるようになる。(下図1のような)

▲図1 ネットワークドライブが表示された"送る"

▲図1 ネットワークドライブが表示された「送る」(RD-REのEドライブやUsersのZドライブ)

ルートにファイルコピーする機会はあまりないため、非表示にすることができないか探したところ、以下のレジストリ値に変更を行えば実現できることが分かった。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorerにて32ビットDWORD値NoDrivesInSendToMenuという名前で作成し16進数で1とする。

▲図2 レジストリエディターで編集

▲図2 レジストリエディターで編集

▲図3 16進数で1にする

▲図3 16進数で1にする

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoDrivesInSendToMenu"=dword:00000001

すると以下のようにドライブは非表示となる。

▲図4 ドライブが表示されない"送る"

▲図4 ドライブが表示されない「送る」

なおレジストリ値はWindows7と8で有効である。
確認したWindows8環境では、サインアウト/サインインにて反映となる。

VMware Playerを強制削除

VMware Playを「プログラムと機能」(Windows8)からアンインストールしようとした
際、”MSIが見つからない”というエラーメッセージが表示されて、アンインストールすることが
できなかった。

いろいろ検索すると同じ現象が発生する様子。
VMware公式サイトに記載されている方法にてアンインストールを行った。
公式サイトのアンインストール方法[別ウインドウで開きます]
同ページの下部に日本語ページへのリンクがある。

ページには多くの記載があるが、アンインストールしようとする製品のインストーラー
ファイルに/clearオプションをつけて、インストール情報を削除する方法や、同ページ
にリンクのあるVMware_Install_Cleaner.zipをダウンロードして実行してみたものの
効果はなかった。

最終的に手動でのアンインストール方法とし公式サイト記載の方法で行うことができたが、
若干異なる点があったので、その内容を記載する。
(アンインストールする製品がVMware Player Version 5.0.2 だったからか…)

1.レジストリのキーの値が一部異なっていた。
  HKEY_CLASSES_ROOT\Installer\Features\もしくはHKEY_CLASSES_ROOT\Installer\
  Products\以降のキーの値は”727E254E8B683324C83C14DF18A7AFFF”であった。
  HKEY_LOCAL_MACHINEにも上記のキー名で登録されていた。

  また以下の場所のキーも違っていた。
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
  に記録されていたキーの値は”{E452E727-86B8-4233-8CC3-41FD817AFAFF}”
  であり、これも公式サイトとは異なっている。

  公式ページとの記載が正しかったのは以下にキーに記載されているもの
  HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\UpgradeCodes\
  ”3F935F414A4C79542AD9C8D157A3CC39″である。
  なお、上記、…\UpgradeCodes\..の記載を削除することで確認した環境では
  他のVMware製品をインストールすることが可能となった。最後に見つけて削除
  した項目だからかもしれない。
  
2.記載されている部分以外にもPlayer関連のキーがあった。
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMAuthdService
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMnetDHCP
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMware NAT Service
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VMUSBArbService
  HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\
   CurrentVersion\Uninstall\{E452E727-86B8-4233-8CC3-41FD817AFAFF}
  HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\VMware, Inc.
  上記箇所のキーも削除した。

1と2に記載の方法で、何とか他のVMware製品をインストールできた。
(インストールの最初の場面で現在セットアップされている製品の
 アンインストールを求められ、インストールが先に進まなかったため)