2017年6月28日水曜日

PC あらあら困った ファイルの関連付け

ファイルの拡張子に応じて、プログラムが立ち上がる!。
これは Windows の 素晴らしい 仕組みです。
でも、 少し、癖! があります。
プログラムの名前で管理されている為、 えっ! となる事も ... 。


プログラムを自分で書いていて、
よせば良いのに、 Debug レベルで一度ファイルに関連付けしてしまうと、
いざ、 Release レベルのもの、 つまり、
同一名称の実行ファイル、 を選び直しても、
最初に登録されたパスに存在するものが呼び出されます。
存在していれば、 です。

それを知らずに、何回、登録し直しても、 結果に変わりはありません。



別に、この事は、プログラミングの有無とは関係ありません。
ごく普通の方も 遭遇する可能性はあります。
それは、 アプリやソフトの 更新 の仕組みと関連があります。



簡単な仕組みは こう です。

ファイルの拡張子 毎に、
関連付 けで や プログラムから開く で使った 実行ファイル がレジストリに登録されます。
何処に保存してあるものかは 問いません。
つまり、ファイルの名称のみ (場所(パス)はここでは無関係) で管理されています。
そして、
それに結び付く形で、
実行ファイル名の 初回の場所(パス)が 個別に保存されます。

同じ名称の 例えば (バージョンが異なり) 保存場所が別の もの  を選択しても、
それは無視されて、
初回登録時のものが呼ばれます。

同じ場所 同じ名称 で 更新 されれば、 問題はありません。
その場所にある その名前の 実行ファイル が呼ばれるから ですね。

問題は 更新 が、 同一名称なのに 別の場所 (パス) に保存された時 に起こります。



それでは、
対策を。
          登録し直しても、 別の (従前の) 場所にある もの が立ち上がってしまう場合の対処法です。



ちょっと、怖い気もしますが (?) 、
regedit.exe レジストリエディタ  の出番です。


以下の階層(場所)を辿って行き、値を訂正しましょう。

  HKEY_CLASSES_ROOT\Applications\xxxxxxxx.exe\shell\open\command
です。
そこの データ に保管されている パス名 を訂正します。


   懇切丁寧には書いていません。
   恐らく、この手段を使う方は、この記述内容で対処出来る と思っているからです。 
   逆に、この記載で不明な方は 対策は止めて置かれた方が良いのかも知れません。
   何せ、 OS の根幹の レジストリ を弄る事になるから です。.



0 件のコメント:

コメントを投稿