レジストリファイルを使って設定を登録する
今回紹介したのはレジストリの設定なので、regファイルを作れば作業は簡単になる。リスト1は「google-chrome:」でChromeを起動するプロトコルハンドラー。リスト2は「mozilla-firefox:」でFireFoxを起動するプロトコルハンドラーだ。どちらも64bit版を想定しているのでインストールパスが異なる場合は書き換えの必要がある。
リスト1
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\google-chrome]
"URL Protocol"=""
[HKEY_CLASSES_ROOT\google-chrome\shell]
[HKEY_CLASSES_ROOT\google-chrome\shell\open]
[HKEY_CLASSES_ROOT\google-chrome\shell\open\command]
@="powershell.exe -noprofile -command \"&{$x=('%1' -replace 'google-chrome:','') ; start-process -FilePath 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe' -argumentList $x }\""
リスト2
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\mozilla-firefox]
"URL Protocol"=""
[HKEY_CLASSES_ROOT\mozilla-firefox\shell]
[HKEY_CLASSES_ROOT\mozilla-firefox\shell\open]
[HKEY_CLASSES_ROOT\mozilla-firefox\shell\open\command]
@="powershell.exe -noprofile -command \"&{$x=('%1' -replace 'mozilla-firefox:','') ; start-process 'C:\\Program Files\\Mozilla Firefox\\firefox.exe ' -argumentList $x}\""
どちらも、レジストリの登録形式ファイルなので、これをメモ帳に貼り付け、拡張子を「.reg」にして保存、エクスプローラーでダブルクリックしてレジストリに設定すればよい。複数マシンに設定するならregファイルを作ったほうが簡単だ。
とは言え、毎回「google-chrome:」「mozilla-firefox:」と入力するのも、これまた面倒。なので、きちんと理解して使うのであれば、3文字程度で他のスキーマなどと衝突しないプロトコルハンドラー名を使うと便利だ。以下のリスト3と4は、それぞれ「chx:」と「ffx:」でchromeとFireFoxを起動するプロトコルハンドラーだ。
リスト3
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\chx]
"URL Protocol"=""
[HKEY_CLASSES_ROOT\chx\shell]
[HKEY_CLASSES_ROOT\chx\shell\open]
[HKEY_CLASSES_ROOT\chx\shell\open\command]
@="powershell.exe -noprofile -command \"&{$x=('%1' -replace 'chx:','') ; start-process -FilePath 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe' -argumentList $x }\""
リスト4
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\ffx]
"URL Protocol"=""
[HKEY_CLASSES_ROOT\ffx\shell]
[HKEY_CLASSES_ROOT\ffx\shell\open]
[HKEY_CLASSES_ROOT\ffx\shell\open\command]
@="powershell.exe -noprofile -command \"&{$x=('%1' -replace 'ffx:','') ; start-process 'C:\\Program Files\\Mozilla Firefox\\firefox.exe ' -argumentList $x}\""
「microsoft-edge:」は、プロトコルハンドラーではないので、この方法が使えないが、他の名前、たとえば「edgx」のような名前でプロトコルハンドラーを定義し、「C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe」を起動するようにすれば、同じように短いプロトコルハンドラー名で登録が可能だ。リストは示さないが、regファイルの場合には、「\」やダブルクオートがエスケープされるので、ゼロから作るのは面倒。先に前記の手順でレジストリに登録し、それをエクスポートしてregファイルを作るといいだろう。
実行コマンドを含めてプロトコルハンドラー名を直せば動くはずだが、プロトコルハンドラーには、いくつか使えないキーワードがある。たとえば、EdgeやChromeは、「Edge:」「Chrome:」「about:」を特別扱いしているので、これらをプロトコルハンドラー名には使えない。
もちろん、すでにHKEY_CLASSES_ROOTにあるキーも使えない。プロトコルハンドラーは、ローカルで定義するものだが、インターネット側ページに同じスキーマを持つリンクが含まれている可能性が常にある。今回のプログラムでは、指定したブラウザ以外は起動できないようになっているが、思わぬ副作用を起こす可能性は否定できない。そのため、偶然で一致しにくい長い名前を使うことを原則として、短いプロトコルハンドラーは相応のリスクがあるという理解で利用していただきたい。
昔からMicrosoftのやることが気に入らない人は多く、何かにつけ話題になるのはそうそう珍しくない。昔から「困ったときの●●批判」と言われていて、ネタに困ったときには反論してこない相手の批判を書くというのはよくあること。筆者も経験が無いわけではないので大きなことは言えないが、ちょっと後ろ向きではある。とはいえEdgeを調べていたら問題解決のヒントを得ることができた。まさにMicrosoft様々である。
この連載の記事
-
第428回
PC
Google/Bingで使える検索オプション -
第427回
PC
WindowsのPowerShellのプロファイルを設定する -
第426回
PC
WindowsでAndroidスマホをWebカメラにする機能を試した -
第425回
PC
無料で使えるExcelにWord、Microsoft 365のウェブ版を調べた -
第424回
PC
Windowsの基本機能であるクリップボードについてあらためて整理 -
第423回
PC
PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? -
第422回
PC
Windows 11の目玉機能が早くも終了、Windows Subsystem for Android(WSA)を振り返る -
第421回
PC
進化しているPowerToys LANで接続したマシンでキーボード/マウス共有機能などが追加 -
第420回
PC
Windowsプレビュー版に搭載されたsudoを試す -
第419回
PC
Windows Insider Previewが変わって、今秋登場のWindows 11 Ver.24H2の新機能が見えてきた? -
第418回
PC
Windows 11のスマートフォン連携は新機能が追加されるなど、いまだ進化している - この連載の一覧へ