はい、レジストリを直接操作してスクリプトを作成できます。
短い答え
次の各コピー.reg
(のようなファイルfirefox.reg
、chrome.reg
、ie.reg
)あなたが(または、スクリプト切り替えたいときにそれらを実行しますreg.exe
)。
Firefoxの場合:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="FirefoxURL"
Chromeの場合:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="ChromeHTML"
IE9の場合:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="IE.HTTP"
長い答え
Windowsは、ユーザーごとの標準プロトコルDefault RegistrationsをUrlAssociations
キーの下に保存します。
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations
ファイルの関連付けと同様に、リンクには「デフォルトプログラム」があります。これはUserChoice
、http
キーを参照する専門用語の一種です。ProgIdの下には標準のファイル関連付けのようなシェル登録もあり、これも変更できますが、ブラウザの近位構成はデフォルトプログラムを使用します(これに関する追加のコメントについては、下を参照してください)。
ここで話しているのは、コントロールパネルの[既定のプログラム]セクションに移動してブラウザを設定するときに変更するものです。
レジストリでこれを直接設定するには、まず、すでに存在するものを調べてみましょう。このスクリーンショットでは、のキーに移動しregedit.exe
ましたChromeHTML
。Chrome はProgId値で指定されたデフォルトのブラウザーです。
あなたは、リンクをクリックしたときに表示され、ブラウザのスイッチに加える必要がある最小限の変更は変更することですProgId
下の値をUserChoice
使用すると、おそらく(変更したい各プロトコルにサブキーhttp
とhttps
同じになりますが、あなたはそれぞれを作りたかったいくつかの理由であれば別のブラウザで開いているもののうち、可能です)。
これで、Firefox、IE、および他のブラウザーに切り替えたい場合に使用するものを決定するだけです。プログラムでこれを決定したい場合Capabilities
は、Firefoxのブラウザ登録のキーを掘り下げることで決定できます。
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet
すべてのブラウザがリストされている場所であり、それぞれが上記の構造を持っている必要があります。
検査から、Firefoxに切り替えたい場合は、FirefoxURL
UrlAssociationsのProgId値をバックアップして使用することがわかります。
(ただし、このように掘り下げたくない場合は、簡単なカンニングがあります。デフォルトのブラウザを設定し、regeditを更新してブラウザの設定を確認してくださいUserChoice
!)
キー値をに変更するだけでFirefoxURL
、Firefoxでリンクが開きます。その後、リンクをクリックするか、コントロールパネルで正しいデフォルトが登録されていることを再確認します。
細心の注意を払っていると、次の2つの欠陥に気づいたかもしれません。
IE URLAssociations
のブラウザ登録の下にサブキーがないStartMenuInternet
ので、ProgId値はどこから来ますか?回答:少なくとも、それ以上の研究が必要です。ハードコードされているか、まだ見つかっていない別のキーに含まれている可能性があります。
FirefoxのプログラムIDのその下のURLAssociations
ですFirefoxURL
が、あなたはブラウザ自体のオプションに登録する]をクリックしたときに、それが使用するFirefoxHTML
代わりのProgIdとして!どうして?繰り返しますが、私は知りません。どちらも存在し、Firefoxを指しているため、両方とも機能します。意図的なものかもしれませんが、おそらく効果のない単なるバグです。
UserChoice
デフォルトプログラムがない場合はどうなりますか?回答:プロトコル(たとえば、http
)の「通常の」ファイルの関連付けが使用されます。これはHKCU\Software\Classes
、ファイルの関連付け(、、HKLM\Software\Classes
およびビューHKCR
)と同様に、標準のProgIdの場所にあります。少なくともChromeはそこに情報を設定しますが、少なくとも私のテストではFirefoxはそうではないようです。
これを既定のプログラムエディターに追加する場合は、そのアプリケーションのUserVoiceフィードバックページで提案し、投票することをお勧めします。開発者が開発時間をどのように費やすかを決定する際に、アプリケーションの作成者がそのフィードバックに注意を払うのは良い権限です。