ということで、拡張子の関連付けを自作なう。
Windows7まではいいのですが、Windows8以降は次の二つのレジストリもチェックしないと関連付けが行われない。というか方法がメトロアプリと整合性が取れない。
従前(Win7)までは、SOFTWARE\\Classes\\拡張子で良かったのが、メトロアプリかデスクトップアプリかをユーザーに選択させてそれを記録しているみたいだ。
そのレジストリ情報がこっちらしき感じ
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\{拡張子}\UserChoice\ProgId
または
HKEY_CURRENT_USER\Software\Microsoft\Windows\Roaming\OpenWith\FileExts\{拡張子}\UserChoice\ProgId
どっちかに残っているとSOFTWARE\\Classes\\拡張子にいくらPrgIDを設定しても「UserChoice」を立ち上げる。試しに「HKEY_CURRENT_USER\Software\Microsoft\Windows\Roaming\OpenWith\FileExts\{拡張子}\UserChoice\ProgId」を消してやると、
で、どっちかを選択すると。
HKEY_CURRENT_USER\Software\Microsoft\Windows\Roaming\OpenWith\FileExts\{拡張子}\UserChoice\ProgId
に「PrgID」がハッシュ付きで書き込まれる。…という感じ
セキュリティの関係でハッシュが合わないと起動しない感じですね。妥当な感じです。ハッシュ計算するWin32APIってあったかな?と
まじめにやるとめんどくさすぎるので、「HKEY_CURRENT_USER\Software\Microsoft\Windows\Roaming\OpenWith\FileExts\{拡張子}\UserChoice\ProgId」を検出すると、「自分で選択してね」というメッセージを表示してお茶を濁そうかと思っております。
ふぅ、めんどくさ。