こんにちは、阿久津です。今回は読者から頂いた質問を取り上げます。届いた電子メールによりますと、何らかの拍子に拡張子「.htm」「.html」のアイコンが未登録状態になるというものでした。確かにそのようなケースはまれにあり、ユーザーによっては驚かれることもあるでしょう。続けて電子メールを読んでいくと問題は、「Microsoft Office関連の更新プログラム導入時に発生する」とのことでした。

そもそもHTMLファイルは、HKEY_CLASSES_ROOT\.htmlキー(HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.htmlキーのエイリアス)に格納されている「既定」のデータ値に左右され、同データ値が「htmlfile」の場合は、HKEY_CLASSES_ROOT\htmlfileキーの情報を元に構成されています。アイコンファイルは、HKEY_CLASSES_ROOT\htmlfile\DefaultIconキーに並ぶ「既定」のデータ値「C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE,-17」で定義され、同ファイルに含まれるアイコンリソースを用いて、HTMLファイルのアイコンを表示するという仕組みです(図01~02)。

図01: 初期状態のHTMLファイル。見慣れたInternet Explorerアイコンが並んでいます

図02: HKEY_CLASSES_ROOT\htmlfile\DefaultIconキーの「既定」でアイコンファイル(リソース)が指定されています

この状態でMozilla Firefoxを導入しますと、先の「既定」のデータ値は「FirefoxHTML」に書き換わり、参照先がHKEY_CLASSES_ROOT\FirefoxHTMLキーに変更されるため、HTMLファイルをダブルクリックした際の関連付けが正しく変更されるのです(図03~04)。

図03: こちらはMozilla Firefoxを導入した状態。HKEY_CLASSES_ROOT\.htmlキーに並ぶ「既定」のデータ値が変更されています

図04: これでHTMLファイルのアイコン表示は、HKEY_CLASSES_ROOT\FirefoxHTML\DefaultIconキーの「既定」が参照されるようになります

ファイルに対する関連付けを簡単に説明したところで、肝心の問題に取りかかりましょう。ポイントは「未登録状態」と「Microsoft Office用更新プログラム」の存在です。前者は単純にアイコンファイルを指す情報が破損しているか、アイコンキャッシュファイルに支障が発生しているかのいずれかでしょう。

アイコンキャッシュファイルの再構築は、デスクトップの配色数を変更するか、あらかじめフォルダーオプションダイアログで<隠しファイル、隠しフォルダー、および隠しドライブを表示する>を選択してから、「%LOCALAPPDATA%」フォルダーにある「IconCache.db」ファイルを削除し、Windows 7に再ログオンするだけです(図05~09)。

図05: デスクトップの何もないところを右クリックし、メニューから<画面の解像度>をクリック。同名のウィンドウが起動したら<詳細設定>をクリックします

図06: プロパティダイアログが起動したら、<モニタ>タブにある「色」のドロップダウンリストから、現在と異なる色数を選択して<適用>ボタンをクリック。再度、元の色数に変更して<OK>ボタンをクリックします

図07: コントロールパネルなどからフォルダーオプションダイアログを起動し、<表示>タブにある<隠しファイル、隠しフォルダー、および隠しドライブを表示する>をクリックして選択してから<OK>ボタンをクリックします

図08: [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「%LOCALAPPDATA%」と入力して<OK>ボタンをクリックします

図09: 起動したエクスプローラーから「Iconcache.db」ファイルを見つけ、同ファイルを削除します。その後Windows 7に再ログオンしてください

問題は後者のMicrosoft Officeです。筆者の記憶が確かなら、Office XP(2002)の時代から導入された「Microsoft Office HTML Icon Handler」というOfficeコンポーネントの一つが原因と考えて間違いないでしょう。同コンポーネントは、HKEY_CLASSES_ROOT\htmlfile\shellex\IconHandlerキーなどから参照され、アイコンの表示などを行なうというもの。

同コンポーネントはクラスID「42042206-2D85-11D3-8CFF-005004838597」で定義されていますが、一部のWebブラウザが同じクラスIDを用いてしまう場合、コンポーネントの更新時や削除時にアイコン情報が変更されると同時に、前述のアイコンキャッシュファイルの状態と整合性が取れなくなり、問題が発生する可能性があります(図10~12)。

図10: Officeセットアップ時には、HTMLファイルなどのエントリを格納するHKEY_CLASSES_ROOT\{ファイルタイプ名}\shellex\IconHandlerにエントリが書き込まれます

図11: HKEY_CLASSES_ROOT\htmlfile\shellex\IconHandlerでは、Microsoft Office HTML Icon HandlerのクラスIDである「{42042206-2D85-11D3-8CFF-005004838597}」が登録されています

図12: こちらはShellExViewというシェル拡張プログラムを制御するツールで、Microsoft Office HTML Icon Handlerを確認したものです。同コンポーネントが関連する拡張子が多数登録されているのを確認できました

この問題を解決するには、HKEY_CLASSES_ROOT\{ファイルタイプ\ShellEx\IconHandlerキーに並ぶ「既定」のデータ値を削除し、前述したアイコンキャッシュファイルの削除を行なうことで解決できます。しかし、Microsoft Office HTML Icon Handler側の仕様的問題である以上、恒久的な解決策はなく、各Webブラウザやアプリケーション側で対策を講じるか、Officeの使用をあきらめるしかありません。

仕事でコンピューターを使う方にOfficeを使用しないという選択肢は難しいでしょう。そこで消極的解決法ですが、HTMLファイルのアイコンが未登録状態になるのを防ぐため、同コンポーネントを無効にするチューニングを紹介しましょう。

1.管理者権限でコマンドプロンプトを起動します。
2.プロンプトから「regsvr32 /u "C:\Program Files\Microsoft Office\Office14\msohevi.dll"」を実行します。
3.成功を示すダイアログが起動したら<OK>ボタンをクリックします。
4.コンピュータを再起動します。

これでチューニング終了です(図13~15)。

図13: <スタート>メニューのクイック検索に「cmd」と入力し、表示された「cmd.exe」を右クリック。メニューから<管理者として実行>をクリックします

図14: コマンドプロンプトが起動したら、「regsvr32 /u "C:\Program Files\Microsoft Office\Office14\msohevi.dll"」と入力して[Enter]キーを押します。画面のように「~成功しました」というメッセージが表示されれば作業完了です

図15: 変更内容を適用するため、電源ボタンのメニューから<再起動>をクリックして、コンピュータを再起動してください

この操作はMicrosoft Office HTML Icon Handlerの実ファイルである「msohevi.dll」をシステムから除外するためのものです。ステップ02の操作は「regsvr32 /u "C:\Program Files\Microsoft Office\Office14\msohevi.dll"」となっていますが、ファイルまでのフルパスは、お使いなられているMicrosoft Officeのバージョンに合わせて変更してください。なお、Microsoftが配布する修正プログラムでコンポーネントの登録を行なうロジックが介入する場合、このチューニングは意味を成さなくなります。あらかじめご了承ください。

図16: 先ほどのShellExViewで、Microsoft Office HTML Icon Handlerを確認しますと、関連する拡張子が大幅に減ります

ちなみに、初期状態に戻す場合は「regsvr32 "C:\Program Files\Microsoft Office\Office14\msohevi.dll"」と実行すれば済むように見えますが、筆者が確認した限りでは一部の情報が復元できませんでした。そのため、HKEY_CLASSES_ROOT\CLSID\{42042206-2D85-11D3-8CFF-005004838597}キーのバックアップを作成し、前述のコマンドの実行とあわせて復元を行なってください。

それでは、また次号でお会いしましょう。

阿久津良和(Cactus)