Programming Field

Windows レジストリ 解剖記

このページではWindowsのレジストリについて扱っています。Windowsの重要な設定も含まれているため、レジストリに対する操作は慎重に行ってください。レジストリの操作にあまり慣れていないときは事前のバックアップを強く推奨します。また、不用意にいろいろなデータを削除するとWindowsが起動しなくなる原因となります。なお、このページで生じた問題の責任は負いかねます。

目次

HKEY_LOCAL_MACHINE

このキーにはシステムに関係する設定、および「すべてのユーザー」で適用される設定が含まれています。

Software\Classes キー

このキーはすべてのユーザー共通で設定される関連付け設定やCOM/OLEオブジェクトの情報が収められます。

書式はすべてHKEY_CLASSES_ROOTと同じであるため、詳細はHKEY_CLASSES_ROOTのページをご覧ください。

なお、HKEY_CURRENT_USER\Software\Classes と同じ設定名がある場合、HKEY_CURRENT_USER 側の設定が優先されます。

Software\Microsoft\Command Processor キー

このキーはシステム全体におけるコマンドプロンプトの既定の設定が入ります。HKEY_CURRENT_USER 以下の同じキーに設定されていない値はこちらの値が使用されます。

詳しくは HKEY_CURRENT_USER の Software\Microsoft\Command Processor キーをご覧ください。

Software\Microsoft\Windows\CurrentVersion\Explorer キー

エクスプローラーに関するシステム全体に適用される設定値が格納されます。

Software\Microsoft\Windows\CurrentVersion\Explorer\CommandStore キー

[Windows 7 以降] ファイルの関連付けにおいて汎用的に使用できるコマンドが登録されます。主にエクスプローラー上で利用される「検索」や「切り取り」などのコマンドが登録されていますが、独自のコマンドを登録することも可能です。書式は「関連付け設定として設定可能なキー・値」に従いますが、Windowsが提供するコマンドの一部はこれに従っていない場合もあります。

Software\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers キー

[Windows XP? 以降] エクスプローラーやファイルダイアログ等で表示されるファイルに対して「オーバーレイアイコン」(Overlay icons; ファイルアイテムのアイコンの上に表示する補助的なアイコン)の処理が登録されます。ここに登録されたCOMクラスが順番に処理され、対象ファイルについて各クラスがアイコンを表示すると判断した場合に、そのクラスが提供するアイコンがファイルアイコンの上に重ねて表示されます。

COMクラスはアルファベット順(レジストリAPIがサブキーを列挙する際の順番)で処理されるため、複数登録が存在する場合は(IShellIconOverlayIdentifier::GetPriority で得られる値にかかわらず)後半に登録されているものが適用されず、結果意図したオーバーレイアイコンが表示されない場合があります。

※ 具体的には、ImageList のオーバーレイアイコン登録上限である 15 個までとなります(参考: Number of ShellIconOverlayIdentifiers (Microsoft TechNet Forums), ImageList_SetOverlayImage function (Microsoft Docs))。意図したアイコンが表示されない場合、不要な登録を消すことで表示できる可能性があります。

  • HKEY_LOCAL_MACHINE
    • Software\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
      • <overlay-name> = <CLSID>
    • ...
<overlay-name> = <CLSID>
ShellIconOverlayIdentifiers キー以下に登録したいハンドラーをサブキーとして登録します。キー名は任意の名前、「(既定)」の値としてハンドラーのCLSIDを指定します。なお、ハンドラーは IShellIconOverlayIdentifier を実装したCOMクラスである必要があります。

参考:

Software\RegisteredApplications キー

[Windows XP?以降] このキーはコンピューター上で利用できるアプリケーションの情報が記録されます。特に「ファイルの関連付け」で「既定のプログラム」を選択する際の情報として用いられます。

[Windows 10] インストーラーなどによって直接関連付け情報を書き換えることができなくなっているため、プログラムに対してファイルの関連付けを行いたい場合は原則としてこのキーを利用した情報登録が必要です。

※ 「既定のプログラム」に関する登録方法などの詳細はMicrosoft Developer Networkサイト内の「Default Programs」をご覧ください。

  • HKEY_LOCAL_MACHINE
    • Software\RegisteredApplications
      • (val) <application-name> = <capability-registry-path>
    • <capability-registry-path>
      • (val) ApplicationDescription = <description>
      • (val) ApplicationName = <application-name>
      • (val) Hidden = d <hidden>
      • FileAssociations
        • (val) .ext = <ProgID>
      • MIMEAssociations
        • (val) <MIME-type> = <ProgID>
      • StartMenu
        • (val) Mail = <name>
        • (val) StartMenuInternet = <name>
      • UrlAssociations
        • (val) <scheme> = <ProgID>
HKEY_LOCAL_MACHINE\Software\RegisteredApplications
(val) <application-name> = <capability-registry-path>
アプリケーションの情報として登録する値を記述します。値の名前(<application-name>)には簡潔なアプリケーション名を指定し、<capability-registry-path> にはHKEY_LOCAL_MACHINE以下のレジストリパスを指定します。
HKEY_LOCAL_MACHINE\<capability-registry-path>
※ 上記の RegisteredApplications に登録したレジストリパス内に登録するデータです。
(val) ApplicationDescription = <description>
アプリケーションの説明文を登録します。通常はリソースから値を取得させる方法が利用されます。この値が存在しないと一覧にリストアップされなくなります。
(val) ApplicationName = <application-name>
(省略可能) アプリケーション名を登録します。この値は原則として RegisteredApplications 以下に登録した値の名前と一致させる必要がありますが、別名を指定することもできます(リソースから値を取得させる方法が利用できます)。値が存在しない場合は RegisteredApplications 以下に登録した値の名前が使用されます。
(val) Hidden = d <hidden>
(省略可能) 「1」を指定すると、既定のプログラムを選択するリストに列挙されなくなります。「0」または値の作成自体を省略した場合はリストに含まれるようになります。
FileAssociations
既定のプログラムとして選択できる拡張子の一覧を持つキーです。原則として、既定で開くプログラムに設定できるのはここに登録された拡張子を持つファイルに限定されます。
(val) .ext = <ProgID>
拡張子「.ext」に対して、<ProgID> に対応する「ファイルの種類」を割り当てることができることを示します。通常は <ProgID> にはアプリケーション×ファイル種別に対応する ProgID の名前を指定します。
MIMEAssociations
既定のプログラムとして選択できるMIMEタイプの一覧を持つキーです。特定のファイル/データをMIMEタイプベースで開く際に選択可能なプログラムとして利用されると考えられます。
※ 実際に使用されるかどうかは未確認です。
(val) <MIME-type> = <ProgID>
MIMEタイプ「<MIME-type>」に対して、<ProgID> に対応する「ファイルの種類」でデータを開くことができることを示します。通常は <ProgID> にはアプリケーション×ファイル種別に対応する ProgID の名前を指定します。
StartMenu
「スタートメニュー」に表示される既定のプログラムとして指定可能であることを示します。
※ このキーを利用する場合、HKEY_LOCAL_MACHINE\Software\Clients 以下のキー(名前は下記値の名前に対応します)にも必要な情報を登録する必要があります。
[Windows 7 以降] 「スタートメニュー」に現れなくなったため使用されません。ただし「Mail」については既定のメールクライアントの選択目的で引き続き使用されます。
Mail = <name>
既定のメールクライアントとして指定できることを示します。<name> には HKEY_LOCAL_MACHINE\Software\Clients\Mail 以下に登録されたキー名を使用します。
StartMenuInternet = <name>
既定のインターネットクライアント(ブラウザー)として指定できることを示します。<name> には HKEY_LOCAL_MACHINE\Software\Clients\StartMenuInternet 以下に登録されたキー名を使用します。
[Windows 7 以降] 「既定のブラウザー」という概念は、「http」や「https」などの各プロトコルに対する「既定のプログラム」で置き換えられているため、この値は使用されていません。
UrlAssociations
既定のプログラムとして選択できるURLプロトコル(Scheme)の一覧を持つキーです。ファイル(拡張子)と同様、URLに対して既定で開くプログラムの設定を行うことができるようにするためにはここに対応する値を登録する必要があります。
(val) scheme = <ProgID>
URLプロトコルスキーム「scheme」に対して、<ProgID> に対応する「ファイルの種類」を割り当てることができることを示します。「scheme」には「http」や「mailto」など、URLの「:」より手前の文字列にあたる値(Scheme)を指定します。