2024年5月24日金曜日

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

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

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

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

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

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

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

    Ctrl + Shift + Esc

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

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

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

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

  2. 下段の詳細設定

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

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

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

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

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

    HKEY_CLASSES_ROOT\.arinco
    (例 arinco_auto_file)

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

    HKEY_CLASSES_ROOT\arinco_auto_file

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

    HKEY_CLASSES_ROOT\.arinco

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

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

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

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

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

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

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

    • HKEY_CLASSES_ROOT\.arinco

      (既定) arinco_auto_file

    • 参照先のキー。

      HKEY_CLASSES_ROOT\arinco_auto_file

    このとき、参照先に文字化けしたキーが追加で作られることがあります。

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

    HKCR の先頭や末尾に文字化けのキーがたまっていたらゴミの可能性が高いです。文字化けしたキーの 既定値 (arinco_auto_file) がどこからも参照されていなければそのキーは不要です。