前回紹介した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のローミング拡張子キーが有効になり、以後は、以前の方式に従ってレジストリを変更しても有効にはならない。
ハッシュ値を簡単に計算する方法がないため、ユーザーが関連付けを変更する場合に、レジストリを操作する場合、このキーを書き換えても無効になる。しかし、ローミング拡張子キー以下を削除することで、該当の拡張子の設定は、他のキーで指定できるようになる。
この連載の記事
-
第427回
PC
WindowsのPowerShellのプロファイルを設定する -
第426回
PC
WindowsでAndroidスマホをWebカメラにする機能を試した -
第425回
PC
無料で使えるExcelにWord、Microsoft 365のウェブ版を調べた -
第424回
PC
Windowsの基本機能であるクリップボードについてあらためて整理 -
第423回
PC
PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? -
第422回
PC
Windows 11の目玉機能が早くも終了、Windows Subsystem for Android(WSA)を振り返る -
第421回
PC
進化しているPowerToys LANで接続したマシンでキーボード/マウス共有機能などが追加 -
第420回
PC
Windowsプレビュー版に搭載されたsudoを試す -
第419回
PC
Windows Insider Previewが変わって、今秋登場のWindows 11 Ver.24H2の新機能が見えてきた? -
第418回
PC
Windows 11のスマートフォン連携は新機能が追加されるなど、いまだ進化している -
第417回
PC
Windows 11のスマートフォン連携機能をあらためて使ってみる - この連載の一覧へ