Windowsの関連付けを決めるレジストリの優先順位とassoc ftypeが効かない問題について

以下に示す通り、優先順位があるのでassocやftypeが効かないことがあります。

拡張子の関連付け(***は拡張子)

  1. HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.***\UserChoiceのProgid
  2. HKCU\Software\Classes\.***の(既定)
  3. HKLM\SOFTWARE\Classes\.***の(既定) ※assocで変わる値
  4. HKCR\.***\OpenWithProgIdsのアルファベット順で一番上のキー

プロトコルの関連付け(***はプロトコル)

  1. HKCU\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\***\UserChoiceのProgid
  2. HKCU\Software\Classes\***\shell\open\commandの(既定)
  3. HKLM\SOFTWARE\Classes\***\shell\open\commandの(既定) ※ftypeで変わる値

ProgID等については以下に示すページに説明があります。