短期集中連載

10年を超える定番クリーナー「CCleaner」を10倍使いこなす 第7回

孤立したレジストリエントリをクリーニング その2

「CCleaner」

 本連載では、定番クリーニングソフト「CCleaner」の機能を紐解き、各項目が実行しているクリーニングの対象を詳細に解説していく。今回は、前回に引き続き“レジストリ”セクションの項目を個別に解説しよう。

ActiveXおよびクラスの問題点

 本項目を端的に紹介すると、COMコンポーネントやActiveXオブジェクトが参照するファイルが存在しない場合、クリーニング対象になるというものだ。そもそもCOM(Component Object Model)とは、一度作成したソフトウェアの機能を他のソフトウェアでも再利用するため、Microsoftが提唱した技術のひとつ。ActiveXはCOMの前身であるOLE(Object Linking and Embedding)の一部を継承したものである。ソフトウェア開発に携わらないとピンと来ない部分だが、たとえばWordとExcelでデータをドラッグ&ドロップで共有するなど、アプリ間連携を実現する仕組みの一種として理解してほしい。

 興味深いのは問題点として検出するその種類。筆者が確認したところ、“ActiveX/COMの問題点”“無効な初期アイコン”“無効または情報のないクラス”などの問題が検出された。たとえばレジストリを確認すると、“HKEY_CLASSES_ROOT\CLSID\{C2BFE331-6739-4270-86C9-493D9A04CD38}\LocalServer32”キーで“C:\Windows\system32\igfxsrvc.exe”を参照している。だが、Intel製GPUのユーティリティソフトである同実行ファイルは存在しないため、“ActiveX/COMの問題点”として検出されるのだ。

 このようにソフトウェアのアンインストール時に残るエントリが、クリーニングの対象となるのが本項目の特徴。この他にも関連付けのエントリやデフォルトアイコンの参照情報、ファイルタイプなどのエントリが対象に加わる。

「CCleaner」で検出した“ActiveX/COMの問題点”のひとつ。“LocalServer32”キーのエントリに問題があることを示している
キーを確認すると、“C:\Windows\system32\igfxsrvc.exe”を参照していることが確認できる

タイプライブラリ

 こちらも“ActiveXおよびクラスの問題点”に似ているが、クリーニング対象となるのはタイプライブラリである。ソフトウェア開発寄りの話が続いて恐縮だが、これはCOMコンポーネントへアクセスする際に利用する宣言などを格納したライブラリの一種。「CCleaner」は、“HKEY_CLASSES_ROOT\Interface”、および“HKEY_CLASSES_ROOT\Wow6432Node\Interface”キーなどをスキャンし、孤立したエントリをクリーニング対象にしている。

 本項目で問題が検出されるのは稀だが、今回は音楽プレイヤーである「foobar2000」に古いプラグインを導入したところ、“参照先の見つからないタイプライブラリ”が発生することを確認できた。このように古いアプリケーションや、アプリケーション自体のバージョンアップ(SDKの変更など)に伴う互換性の欠落時に発生する可能性が高い。

アプリケーション

“HKEY_CLASSES_ROOT\Applications”キーは“プログラムから開く”などの機能が参照する箇所。こちらの孤立したエントリがクリーニング対象となる

 Windowsは、アプリケーション実行形式ファイル(拡張子“.exe”など)の一部を“HKEY_CLASSES_ROOT\Applications”以下のキーで管理し、この情報は“プログラムから開く”などで用いられる。実行ファイル名を名前としたキーに文字列値“NoOpenWith”を作成すると一覧に現れなくなるため、レジストリカスタマイズで操作した経験をもつ方も少なくないだろう。

 「CCleaner」は、実行形式ファイル名のキーにサブキーとして“shell”が存在する場合、実行形式ファイルのパス情報を確認し、ファイルをスキャニングしている。その上でエントリは存在するものの、ファイルが存在しない場合はクリーニング対象として列挙する仕組みだ。こちらも通常であれば問題は発生せず、アンインストールプログラムの見落としなどで残ったエントリとなるため、クリーニング対象として並んだ場合は削除した方がいいだろう。

フォント

 ご存じの通りWindows上で使用可能な大半のフォントは、“%SystemRoot%\Fonts”フォルダにファイルが格納されている。だが同時に、インストールしたフォント情報を“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts”キーに、フォント名を名前にもつ文字列値と、フォントファイルのパスをデータとしてもつエントリとして管理している。

Windowsのフォントフォルダをエクスプローラで開いた状態。インストール済みのフォントが現れる
フォントファイルの情報は“Fonts”キーで管理され、実際のファイル名がデータとして保持されている

 「CCleaner」は、“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts”キーのエントリをスキャンし、データで示されたフォントファイルが存在するか情報を取得。そして、フォントファイルが見当たらない場合にエントリをクリーニング対象として列挙する。何らかの理由でフォントファイルを別ドライブに移動した際などは、同項目を使ってクリーニングを行うと整合性を図りやすくなるはずだ。

アプリケーションのパス

 こちらもアンインストール時に残ったエントリの削除を目的としている。“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths”キー、および“HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths”キーがクリーニングのターゲットだ。

 そもそもWindowsのパス参照ロジックは、最初にカレントフォルダ、次に環境変数“Path”、そしてレジストリの“App Paths”キーという順に参照している。そのため同キーに実行ファイル名を含むパス情報のエントリが存在する場合、「ファイル名を指定して実行」などから、実行ファイル名だけでアプリケーションが起動可能になるのだ。

“App Paths”キーの内容。文字列値“(既定)”にパスを含む実行ファイル名を格納している。アプリケーションによっては、作業パスを示す文字列値“Path”が存在することも
たとえば「7-Zip」はApp Pathsキーの登録があるため、「ファイル名を指定して実行」から実行ファイル名だけで起動できる

 通常はアンインストーラーがキレイに削除するはずだが、何らかの理由でエントリが残されているものの実行形式ファイルが存在しない場合、「CCleaner」が削除対象として列挙する。問題がなければ、そのままクリーニング対象に加えよう。

次回予告

 次回は残りのレジストリクリーニングについて解説し、いよいよ本連載も最終回となる。興味をもたれた方はぜひご覧いただきたい。