こんにちは、阿久津です。前回に引き続き、USBメモリのアイコンを変更しましょう。前回は初心者向けとしてショートカットアイコンを変更しましたが、今回のターゲットは「コンピュータ」フォルダに表示されるUSBアイコンです。もちろんAutorun.infを使う方法もありますが、それでは面白くありません。今回はレジストリを駆使し、USBメモリに使用されるアイコンを変更しましょう。

そもそもWindows OSでは、コンピュータに接続したデバイスを、HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enumキー下で管理しています。カテゴリごとにサブキーが用意され、USBメモリはUSBキーが使用されます。しかし、サブキーを展開しますと、VID~と数値が並び、一見しただけでは、どのデバイス用の情報なのか、よくわかりません(図01~02)。

図01: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enumキー下には、コンピュータに接続したデバイスに関するサブキーが並びます

図02: 今回の例では文字列値「LocationInformation」の内容がわかりやすかったので、開いたキーがXbox 360コントローラの情報であることがわかりますが、通常はどのデバイスがどのサブキーと連動しているのかわかりません

ここでポイントとなるのが、接続したUSBメモリがどのベンダーIDとプロダクト(デバイス)IDを持っているか、という点。そもそもデバイスには、各ハードウェア業界団体(PCIデバイスなら、PCI SIG)から割り当てられたIDがあり、それを元にデバイスを識別しています。Windows OSは、このIDを使用してハードウェアを管理していますので、最初に使用中のUSBメモリが持つベンダーIDとプロダクトIDを確認し、カスタマイズ対象となるキーを確認しなければなりません。

探索方法は、コントロールパネルなどからデバイスマネージャを起動し、USBメモリのプロパティダイアログにある<詳細>タブのドロップダウンリストから「デバイスインスタンスパス」を確認してみましょう。今回の例では、ベンダーIDが「090C」、プロダクトIDが「1000」ですので、HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB \ VID_090C&PID_1000 \ AA00000000000211キーが、使用中のUSBメモリに関する情報を格納するキーということが確認できました(図03~06)。

図03: デバイスマネージャは、ファイル名を指定して実行などから「devmgmt.msc」を実行すると直接起動できます

図04: 今回はUSBメモリがターゲットですので、<ユニバーサルシリアルバスコントローラ>を展開し、<USB大容量記憶装置>をダブルクリックします

図05: <詳細>タブのドロップダウンリストから「デバイスインスタンスパス」を選択しますと、ベンダーIDとプロダクトIDを確認できます。この情報をメモしておきましょう

図06: 先の情報を元にキーを開きますと、ターゲットとなるUSBメモリのキーが確認できました

それでは実際のチューニングに取りかかりましょう。あらかじめ使用するアイコン用ファイルを任意の場所(ここではドキュメントフォルダ)に置いてから、クイック検索やファイル名を指定して実行などから「regedit」を実行してレジストリエディタを起動し、先に調べたキーからDevice Parametersキーを開きます。右ペインの何もないところを右クリックし、メニューから<新規>→<文字列値>と選択。名前を「Icons」に変更します。同文字列値をダブルクリックで開き、値のデータにアイコン用ファイルをフルパスで入力し、<OK>ボタンをクリックします。後はレジストリエディタを終了させ、Windows Vistaを再起動してください(図07~10)。

図07: アイコン用ファイルを特定のフォルダに置きます。ここではドキュメントフォルダに置きました

図08: 「ファイル名を指定して実行」や「クイック検索」のテキストボックスに「regedit」と入力して[Enter]キーを押します

図09: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB \ {ユニバーサルシリアルバスコントローラで調べた値} \ Device Parametersまでキーをたどって開き、右ペインで右クリック。<新規>→<文字列値>と選択して、文字列値「Icons」を作成します

図10: 文字列値「Icons」のデータ値をアイコン用ファイルまでのフルパスに書き換えて、<OK>ボタンをクリックしてください。後はレジストリエディタを終了させ、Windows Vistaを再起動します

これで設定完了です。Windows Vista再起動後はUSBメモリのアイコンが変化しました。なお、筆者は検証していませんが、本チューニングはWindows XPにも使用可能です(図11)。

図11: 再起動後はご覧のようにUSBメモリのアイコンが変化します

前回も述べましたが、Windows VistaにUSBメモリ用アイコンは用意されていませんが、SDメモリカードなどのアイコン情報は、「%windir% \ system32 \ imageres.dll」ファイルに格納されています。なかには懐かしいZIPドライブ風やDATテープ風、外付けリムーバブルドライブ、SDメモリカード用アイコンが用意されていますので、今回紹介したチューニング方法でUSBデバイスのアイコンを設定する場合は「%windir% \ system32 \ imageres.dll,番号」と指定することで、アイコンリソースを利用できます。

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

阿久津良和(Cactus)