Windows Vistaで関連付けを変更する

Windowsを長い間使っていたにもかかわらず、最近、「プログラムを指定して開く」が便利すぎてそれしか使っていなかったためか、関連付けを変更する設定はどこでやるのか分からなかった。というか、結局のところ、Vistaでは、関連付けってどうでも良いことになってくるみたいだ。慣れとは恐ろしい。

で、どこでやるかといえば、スタートメニューの直下に、「規定のプログラム」というメニューがあって、そこから変更できる。とはいえ、僕の環境ではなぜか、バッチファイル(.bat)の関連付けがテキストエディタになっていて、それを修正したかったのだが、ここではできない。レジストリで言うところの%1が指定できないからだ。

では、どうやってやるのか。Windows NT由来のシステムでは、元来、関連付けは、HKEY_CLASSES_ROOTだけではなく、HKEY_CURRENT_USER\Softwares\Classesという部分でも行える。もともと、HKEY_CLASSES_ROOTには、仮想的にHKEY_CURRENT_USER\Softwares\Classesの内容がマージされているのだ。というか、ユーザー権限しかなければ、自分用の関連付け設定は、必然的にHKEY_CURRENT_USER\Softwares\Classesでしか行えない。この辺りの事情は、http://support.microsoft.com/kb/256986/jaを見るのが良いだろう。

しかしながら、Windows XP以降では、さらに話はややこしい。

HKEY_CURRENT_USER\Software\Microsoft\Windows
\CurrentVersion\Explorer\FileExts

というキーがあるからだ。そして、「プログラムを指定して開く」はここを編集しているに過ぎない。こうなった理由としては、インストーラなどの厳格なルールとなるべきモノには、HKEY_CLASSES_ROOTやHKEY_CURRENT_USER\Softwares\Classesに設定をさせて、ユーザーが気まぐれでいじりたい設定に関しては、FileExtsにするという漠然とした使い分けが存在しているようだ。

ユーザーが間違って設定を変えてしまった場合には、FileExtsの下の該当エントリだけを削除すれば、ある意味ではマシンのデフォルト状態に戻るというフェイスセーフ機能が付いているとも言える。

とはいえ、この機能、比較的後になって搭載されたので対応できていないアプリは多く、関連付けが変になったので、アプリ側で関連付けを奪おうとか考えても、できないことが良くある。ユーザーの設定の優先順位は高いのだ。

で、今回の僕の場合は、FileExts\.batを削除することで解決。
しかし、この作業、GUIからできそうなんだけど、結局、できなかった・・・。どこかに設定がありそう。