2024年5月24日金曜日

【プログラムから開く】で選択されたアプリを完全にリセットする方法

プログラムから開くから常にこのアプリを使うを間違えて選択してしまったファイル拡張子を元に戻す方法です。

プログラムから開く で選択されたアプリをリセットする方法

ユーザー選択のレジストリを削除する

  1. 拡張子のレジストリキーを削除します。

    HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.拡張子

  2. Explorer を再起動すると反映されます。

    Ctrl + Shift + Esc

    タスクマネージャー エクスプローラーの再起動

アクセスが拒否された場合

FileExts\.拡張子\UserChoice のアクセスが拒否されて削除できない場合。

  1. UserChoice を右クリックして、アクセス許可

  2. 下段の詳細設定

  3. 種類が拒否になっているプリンシパルを削除します。

もともと拡張子が登録されていた場合は、元の関連付けアプリに戻りますが、何も設定されていない拡張子を常にこのアプリを使うにした場合はもうひと作業必要です。

通常の関連付け設定を削除する

プログラムから開く を実行する前に拡張子が登録されていなかった場合、通常の関連付け設定も登録されるため削除します。

  1. 拡張子の既定値を見ます。

    HKCU\SOFTWARE\Classes\.arinco
    (例 arinco_auto_file)

  2. 参照先のレジストリキーを削除します。

    HKCU\SOFTWARE\Classes\arinco_auto_file

  3. 拡張子のレジストリキーへ戻り削除します。

    HKCU\SOFTWARE\Classes\.arinco

「プログラムから開く」の仕様には問題あり

プログラムから開く(OpenWith.exe) の動作には多くの問題があります。

  • プログラムから開く を選択しただけで FileExts\.拡張子 が登録され残り続ける。

  • 開いたプログラムの履歴を消す方法がない。

  • 常にこのアプリを使う にしたアプリを UI から解除できない。

  • 関連付けのない拡張子を UserChoice にする挙動にバグがある。

    元もと関連付けのない拡張子を常にこのアプリを使うにすると通常の関連付けのキーも作成されます。

    • HKEY_CLASSES_ROOT\.arinco

      (既定) arinco_auto_file

    • 参照先のキー。(ファイルタイプ)

      HKEY_CLASSES_ROOT\arinco_auto_file

    このとき、(既定)がarinco_auto_fileになっている文字化けしたキーが追加で作られることがあります。

    再現性が不定で、本来の拡張子のキーの他に文字化けしたキーが 1 つ作られる場合、2 つ作られる場合、さらに、何も作られないパターンまで確認しています。

    HKCR の前後に文字化けのキーがたまっていたらゴミの可能性が高いです。

ASSOC や FTYPE コマンドでは関連付けを解除できない

非常に高度な話でレジストリ HKCR、HKCU、HKLM の関係を理解しているのが前提です。

プログラムから開く の設定はすべてレジストリHKCUに保存されます。

HKCUHKLMに同じ値がある場合HKCUが優先されます。これがユーザー設定を解除すると元の関連付けに戻る仕組みでもあります。

しかし、ASSOCFTYPE コマンドはHKLMしか参照せず、書き込みもHKLMにしか行いません。

拡張子 .arinco のファイルの関連付けが見つかりません

そのため、ASSOCFTYPE コマンドではプログラムから開くでの設定は参照できないし操作もできません。