拡張子やURLプロトコルをアプリ選択画面に関連付ける
公開日:
カテゴリ: Windows
拡張子やURLプロトコルをアプリ選択画面に関連付け、毎回開くアプリを選択できるようにする方法を紹介します。
TL;DR
rem 共通で必要なレジストリ
reg add "HKLM\SOFTWARE\OpenWith\Capabilities" /v "ApplicationName" /t REG_SZ /d "OpenWith"
reg add "HKLM\SOFTWARE\OpenWith\Capabilities" /v "ApplicationDescription" /t REG_SZ /d "任意のプログラムを選択"
reg add "HKLM\SOFTWARE\RegisteredApplications" /v "OpenWith" /t REG_SZ /d "SOFTWARE\OpenWith\Capabilities"
reg add "HKLM\SOFTWARE\Classes\OpenWith" /ve /t REG_SZ /d "OpenWith"
reg add "HKLM\SOFTWARE\Classes\OpenWith" /v "AppUserModelId" /t REG_SZ /d "OpenWith"
reg add "HKLM\SOFTWARE\Classes\OpenWith\shell\open\command" /ve /t REG_SZ /d "\"C:\Windows\System32\OpenWith.exe\" %1"
rem 拡張子単位で実行(以下は.htmlと.htmに関連付ける例)
reg add "HKLM\SOFTWARE\OpenWith\Capabilities\FileAssociations" /v ".html" /t REG_SZ /d "OpenWith"
reg add "HKLM\SOFTWARE\OpenWith\Capabilities\FileAssociations" /v ".htm" /t REG_SZ /d "OpenWith"
rem URLプロトコル単位で実行(以下はhttpとhttpsに関連付ける例)
reg add "HKLM\SOFTWARE\OpenWith\Capabilities\URLAssociations" /v "http" /t REG_SZ /d "OpenWith"
reg add "HKLM\SOFTWARE\OpenWith\Capabilities\URLAssociations" /v "https" /t REG_SZ /d "OpenWith"
上記コマンドを実行後、設定アプリで関連付けを行えば完了です。
概要
アプリ選択画面の実体は以下のファイルです。
C:\Windows\System32\OpenWith.exe
関連付けされていないファイル形式を実行しようとしたとき、もしくは開こうとしたファイルに対応するアプリケーションが新しくインストールされた後の初回実行時に自動実行され、アプリ選択画面が表示されます。
ただし、設定画面で OpenWith.exe
を関連付けしようとすると、上記のメッセージが表示されて関連付けできません。そこで、レジストリで OpenWith.exe
を1つのアプリケーションとして登録しておき、関連付けの画面で選択できるようにします。
ご注意
本記事では、手動でレジストリの操作を行うため、誤った操作にはくれぐれもご注意ください。
方法
本手順ではすべてのユーザに対して適用される HKEY_LOCAL_MACHINE
で実行しますが、おそらくユーザ単位の HKEY_CURRENT_USER
(HKEY_USER
) でも可能と思われます(動作確認はしておりません)。
アプリケーションの登録(共通)
まず以下のキーを追加します。
HKEY_LOCAL_MACHINE\SOFTWARE\OpenWith\Capabilities
次に作成したキーの中に以下の文字列値を追加します。値は適当でも大丈夫です。
- ApplicationName
- 値:
OpenWith
- 値:
- ApplicationDescription
- 値:
任意のプログラムを選択
- 値:
最後に以下のキーに文字列値を追加して本項は完了です。
HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications
- OpenWith
- 値:
SOFTWARE\OpenWith\Capabilities
- 値:
ここで指定した文字列値の名前 OpenWith
は後で使います(A)。
アプリケーションの登録(拡張子に関連付ける場合)
先ほど作成した Capabilities
キーの中に、新しく以下のキーを作成します。
HKEY_LOCAL_MACHINE\SOFTWARE\OpenWith\Capabilities\FileAssociations
このキーの中に、文字列値として拡張子とクラス名(後で使います(B))の組み合わせを登録します。特に事情がなければ、すべて同じクラス名で大丈夫です。複数登録できます。
以下は、拡張子 .html
と .htm
に対して設定する例です。拡張子の1文字前のピリオドも必要です。
- .html
- 値:
OpenWith
- 値:
- .htm
- 値:
OpenWith
- 値:
アプリケーションの登録(URLプロトコルに関連付ける場合)
拡張子に関連付けするときと同様に Capabilities
キーの中に、新しく以下のキーを作成します。
HKEY_LOCAL_MACHINE\SOFTWARE\OpenWith\Capabilities\URLAssociations
このキーの中に、文字列値としてURLプロトコルとクラス名(後で使います(B))の組み合わせを登録します。こちらも特に事情がなければ、すべて同じクラス名で大丈夫です。複数登録できます。
以下は、拡張子 http
と https
に対して設定する例です。入力するのはURLのコロンの手前までの文字列です。
- http
- 値:
OpenWith
- 値:
- https
- 値:
OpenWith
- 値:
クラスの登録
まず、以下のキーを開きます。
HKEY_LOCAL_MACHINE\SOFTWARE\Classes
このキーの中にアプリケーションの登録で追加したクラス名(B)のキーを作成します。クラス名を単一ではなく複数種類設定した場合は、設定した分だけ以下の手順を実行します。本手順通りであれば、以下のキーを作成します。
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OpenWith
まず、このキーの既定の値にクラス名(B)をセットします。さらに、AppUserModelId
には(A)の値をセットします。本手順通りであれば、以下になります。
- (既定)
- 値:
OpenWith
- 値:
- AppUserModelId
- 値:
OpenWith
- 値:
次に、このキーの中に以下のキーを作成します。
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OpenWith\shell\open\command
このキーの既定の値に、 OpenWith.exe
までの実行パスと引数を設定します。
- (既定)
- 値:
"C:\Windows\System32\OpenWith.exe" %1
- 値:
設定アプリで関連付け
ここまでの手順を進めると、設定アプリで関連付けができるようになるので、あとは通常の既定のアプリの変更手順と同じです。
設定アプリを開き、アプリ→既定のアプリと遷移していき、拡張子の場合はファイルの種類、URLプロトコルの場合はリンクの種類から設定値を アプリの選択
に変更します。
補足など
- URLプロトコルの
http
とhttps
の既定のアプリの設定は特殊で、どちらかの既定のアプリを変更すると連動してもう片方も自動で切り替わります- どちらか片方のプロトコルにしか登録されていないアプリは、どちらも選択肢に表示されません
カテゴリ: Windows