MSN MessengerがURLを開くブラウザを決定する挙動が、大体つかめた気がするので、手順を書いてみようかと。かなりアクロバットなレジストリの参照の仕方をしているなぁという感想。普通にhttpの関連付けから起動とかで良いじゃん。

MSN MessengerはURLを開く時、以下のような感じでレジストリを参照してました。

  1. HKEY_CLASSES_ROOT\.htmの標準の値を読む
    1. htmlfileだった場合
      1. IE強制(多分)
    2. htmlfileでない場合
      1. HKEY_CURRENT_USER\httpをチェック(普通は無い)
      2. HKEY_CLASSES_ROOT\httpをチェック(普通はある)
      3. HKEY_CLASSES_ROOT\httpの関連付けに従ってURLを開く

というわけで、やることは、

ということになります。これでMSN Messengerから任意のブラウザを起動することができるはずです。

こんな感じのレジストリファイルを作成し、ダブル・クリックしてやれば良いはず。

REGEDIT4

[HKEY_CLASSES_ROOT\htm.dummy]

[HKEY_CLASSES_ROOT\.htm]
@="htm.dummy"

[HKEY_CLASSES_ROOT\http\shell]
@="Moon"

[HKEY_CLASSES_ROOT\http\shell\Moon]
@="Moon"

[HKEY_CLASSES_ROOT\http\shell\Moon\command]
@="\"C:\\Program Files\\Moon Browser\\mb.exe\" \"%1\""

責任持たないけど。もちろん実行ファイルのパスなどは環境に合わせて、自分の起動したいブラウザのパスなどにしてやる必要はあります。

以上の作業で、自分の環境では問題なくFirefoxMoon BrowserOpera、よくわからない自作のJScriptファイルなどどんなものでも起動できる様になりました。

Firefoxの場合は、どうやら設定から標準のブラウザにしてやれば問題なくFirefoxで開かれるようになるのであまり意味は無いですが(手動で関連付けを設定してたりする人には意味はある)、Moon BrowserやDonut RAPTなどで開けないものかと苦労していた方は試してみる価値はあると思います。

間違ってるかもしれないですけどね。

追記@2004/07/11

大体この手順で良さそうな感じですね。SleipnirDonutPとかでも問題なく起動したようです。

補足ですが、普通にこれやると拡張子がhtmなファイルをダブルクリックしても、ブラウザで開けなくなります。まぁ滅多に困ることはないと思いますが念のため。元のような挙動にしたい場合は、自分でガリガリレジストリを編集するか、フォルダオプションなんかで改めて設定する必要があります。

ここでは説明の簡略化のためにそこらへんはすっ飛ばしました。

追記@2004/07/13

MSN MessengerからURLをhttpプロトコルの関連付けで開くバイナリ・パッチがMSN Messenger Windows Messenger Part17の277にありました。スバラシイ。