Windows 10で増殖する“謎サービス”の正体を追え!:その知識、ホントに正しい? Windowsにまつわる都市伝説(82)(2/2 ページ)
Windows 10になって、Windows 8.1以前には存在しなかった「CDPUsersvc_XXXXX」のように「_XXXXX(XXXXXはランダム)」で終わるサービス名のサービスが追加されたことに気が付いた人はいるでしょうか。“マルウェアやスパイウェアが入り込んだのでは”と不安に思った人も少なくないかもしれません。でも安心してください。謎は多いものの、Windows 10の正規のコンポーネントであることは確かです。
サービス開始を無効化できないという不思議
謎のサービスは、サービスの構成設定についても、従来のサービスとは異なる特徴があります。「サービス」スナップインや「SC.EXE」コマンドを使用して、サービスのスタートアップを変更(例えば、「自動」から「無効」に変更)しようとすると、あるサービスは「パラメーターが間違っています」と表示されます。また、別のサービスは「スタートアップの種類」ドロップダウンリストがグレーアウト表示となり、変更できません(画面4)。
レジストリの「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<サービス名>」キーの「Start」値を直接編集することで、サービスを無効化することは可能です。Windows Sysinternalsの「Autoruns(Autoruns for Windows)」ユーティリティーを使用すれば、チェックボックスをオフにするだけで、簡単かつ安全にサービスを無効化できます。
- Autoruns for Windows(Microsoft TechNet:Windows Sysinternals)
しかし、謎のサービスを無効化することはお勧めしません。前出の表1のサービスの説明にあるように、アプリの正常な実行に影響するかもしれませんし、そもそもサービスの無効化が無意味である可能性があるからです。
筆者は、全てのUWPアプリを終了して、現在実行中の謎のサービスを全て停止し、Autorunsを使用して謎のサービスを無効化してみました。その状態でUWPアプリを開始すると、スタートアップを無効にしたサービスが再度開始され、実行中の状態になったのです。Autorunsでは、「サービス」スナップインには表示されない、「_XXXXX」の付かない同名のサービスも含めて無効化しましたが、アプリを起動すると実行中になりました(画面5)。Windows 10では、Windowsサービスに関して、公開されていない新しい仕様が追加されているようなのです。
レジストリに登録されているサービスグループ「UnistackSvcGroup」には、「_XXXXX」の付かないサービスが定義されていました(前出の画面2)。しかし、実際に「svchost.exe」でホストされるサービスは「_XXXXX」が付きます。Windows 10 Anniversary Update(バージョン1607)では、「サービス」スナップインに表示されるのは「_XXXXX」が付くサービスで、「_XXXXX」が付かないサービスは非表示になっています。そして、「_XXXXX」が付かないサービスは、「タスクマネージャー」の「サービス」タブやSCコマンド、「NET START」コマンドを使用しても、開始することができません(前出の画面2)。
「SC QC」コマンドを使用して「_XXXXX」の付くサービスと「_XXXXX」の付かない同名のサービスの構成設定を確認すると、「_XXXXX」の付くサービスの種類(TYPE)は「0xE0(224)」で識別される「USER_SHARE_PROCESS INSTANCE」、「_XXXXX」の付かない同名のサービスの種類は「0x60(96)」で識別される「USER_SHARE_PROCESS TEMPLATE」となっていました(画面6)。従来のサービスの種類は、0x10(16)の「WIN32_OWN_PROCESS」や0x20(32)の「WIN32_SHARE_PROCESS」などです。0xE0(224)の「USER_SHARE_PROCESS INSTANCE」と0x60(96)の「USER_SHARE_PROCESS TEMPLATE」は、どちらもWindows 8.1以前は存在しなかった種類です。
- HKLM\SYSTEM\CurrentControlSet\Services\service-name|Type[英語](Microsoft TechNet)
サービスを無効にする意味がない理由は、スタートアップの無効化で制御できないだけではありません。謎のサービス群の「_XXXXX」部分は、PCを起動するごとに変化するからです。実行中のWindowsで謎のサービス群のスタートアップやその他の設定を変更したとしても、次のPC起動時には新しいサービス名を持つ、既定の設定で復活してしまうからです。
AutorunsにはオフラインのWindowsインストールを調査する機能(「File」メニューの「Analyze Offline System」)があります。この機能を使って、Windowsインストールを含むオフラインのディスクをマウントし、サービス登録状況を見てみると、「_XXXXX」が付くサービスが存在しないことが分かります(画面7)。
これは筆者の想像ですが、Windowsが起動する際に、「0x60(96)」の「USER_SHARE_PROCESS TEMPLATE」のサービスをテンプレートとして、「_XXXXX」が付く、「0xE0(224)」の「USER_SHARE_PROCESS INSTANCE」のサービスが作成されるのでしょう。
仕様がないのはしょうがない?
結局、謎サービスの謎はますます深まるばかりですが、少なくとも、Windows 10のWindowsサービスに関して、Windows 8.1以前にはなかった幾つかの仕様変更(追加)が行われていることは明らかになりました。正式な公開情報がないため、謎のサービスの設定には、下手に触れない方がよいでしょう。思わぬトラブルに見舞われる可能性があります。
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Windowsで起動時に自動実行される不要なプログラムを「見つける」方法
アプリケーションのインストールなどを繰り返していると、いつのまにかWindowsの起動時に自動実行されるプログラムが増殖する。これらを確認するには、Windows 2000なら[コンピュータの管理]を、Windows XPなら[システム情報]を使う。またWindows XPでは[システム構成ユーティリティ]で削除指定ができる。 - Windowsのsvchost.exeプロセスとは? ―sc.exeでサービスをコマンドラインから制御する―
リッスンしているネットワーク・ポートを調べていると、svchost.exeというプロセスが所有者となっていることがよくある。svchost.exeは、ネットワーク関連の基本的なサービスを起動するための親となるプロセスであり、いくつかのグループに分けてサービスを起動している。scコマンドを使うと、サービスをコマンド・プロンプトから制御することができる。 - Windows 10のWindows Updateサービスを停止しようと考えている方へ
Windows 10のWindows Updateは、以前のWindowsから大きく変わりました。Windows 10になってからも変更は続いています。半ば強制的なWindows Updateに対抗する最終手段は「Windows Updateサービス」の無効化ですが、どうしてもというなら、影響を知った上で一時的に無効化するのがよいでしょう。 - Windows 10初期リリース(1507)のサービス終了のお知らせ
マイクロソフトは2017年4月12日(日本時間、以下同)、当初の予定通り、Windows Vista(Service Pack 2)に対する全ての製品サポートを終了しました。次にサポートが終了するのはWindows 7ですが、まだ3年もあると思っていませんか。それよりも前に、セキュリティ更新提供が終了するWindows 10があります。