前回紹介したWindows Vistaでは、セキュリティを高めるために、関連付けは、インストール時に管理者権限でアプリ自身を登録し、アプリがユーザー権限で関連付け情報をAPI経由で登録とかなり面倒なものになった。
Windows 8方式での関連付けは登録が簡略化されている
その反省か、Windows 8方式の関連付けでは、登録方法が簡略化されている。ただし、互換性の維持という点から、Windows 8でもVista方式の利用は可能。また、エクスプローラーからデータファイルに対しての関連付けを「プログラムから開く」で変更した場合、ユーザーが実行ファイルを直接指定すると、XP/Vista方式での設定も同時に行われる。
Windows 8でも、既定のアプリとして登録するプログラムは「ProgID」に登録し、HKEY_CLASSES_ROOTで、拡張子とProgIDを直接関連づけるか、拡張子とファイルタイプを関連付けしたあと、ファイルタイプとアプリを関連づけるといった基本的な方法は同じ。ただし、Windows 8では、ストアアプリを割り当て可能になっている。ストアアプリは、デスクトップ環境の実行ファイルとは実行のメカニズムが違う。
Windows 8以降で、エクスプローラーを使い、データファイルに対して、関連付けを変更すると、Windows 8方式で、拡張子と既定のプログラムの関連付けを記録する。ユーザーが変更をしなければ、アプリが登録した関連付け方式が使われる。
Windows 8では、新たに関連付けをレジストリにある
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Roaming\OpenWith\FileExts\[拡張子]
で行なう(以下このキーをローミング拡張子キーと呼ぶ)。Windows 8以降での優先順位を順位は、下の図のようになり、より優先順位の高いキーが設定されているなら、低い優先順位のキーがあっても無視される。このローミング拡張子キーが最も優先度が高い。
また、Windows 8では、関連付けは、原則、ユーザーごとに管理されるものとなった。HKCR(HKEY_CLASSES_ROOT)は、実際には、
HKEY_CURRENT_USER\SOFTWARE\Classes
HKEY_LOCAL_MACHINE\SOFTWARE\Classes
の2つのキーを合成したもので、HKCU(HKEY_CURRENT_USER)のほうが優先される。また、書き込みもHKCU側に行われる。関連付け関係のAPIなども原則HKCU側を設定する。このため、通常は、HKCRのみを扱えばよい。
Windows 8のローミング拡張子キーには、UserChoiceキーがあり、ここに「Hash」と「ProgId」の2つのアイテムがある。ProgIdが拡張子に対するデフォルトのプログラムを指定するアイテムで、ここにProgIDまたは、ファイルタイプのキー名(HKCRは省略される)が記録されている。
Hashは、セキュリティ用の情報で、書き込んだProgId値が正しいものかどうかを確認するための値で、WindowsがProgIdアイテムを書き換えたときに設定する。Hash値の計算方法は公開されていない(解析したという話はあるようだが)。しかし、API経由で関連付けを行えば、Windowsが正しく設定してくれる。
つまり、Windows 8では、実際にはVistaからだが、関連付けは、アプリケーションがレジストリを操作して行なうことは想定しておらず、API経由で設定することになっている。ただし、デスクトップ環境では、Windows 8以前を前提に開発されたアプリケーションがあるため、互換性を維持するため、レジストリの操作による関連付けを行なっても動作する。
しかし、ユーザーが、エクスプローラーから関連付けを変更すると、Windows 8のローミング拡張子キーが有効になり、以後は、以前の方式に従ってレジストリを変更しても有効にはならない。
ハッシュ値を簡単に計算する方法がないため、ユーザーが関連付けを変更する場合に、レジストリを操作する場合、このキーを書き換えても無効になる。しかし、ローミング拡張子キー以下を削除することで、該当の拡張子の設定は、他のキーで指定できるようになる。
この連載の記事
-
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 - この連載の一覧へ