風で飛んでいくチラ裏

気ままに雑記メモ書き殴り。古い記事は別blogからの引っ越しなのでレイアウトがアレです。

「ファイルを開くプログラムの選択」で表示されるプログラムの参照先を変えたい、消したい

「ファイルを開くプログラムの選択」で困ったことになったのと、それの対応をメモ。 今のところ筆者PCは正しく動作していますが、以下の内容を行う場合は自己責任でお願いします。 ■どういうときに困るか 新旧バージョンを同時に持っておきたいプログラムで、以下の条件を満たす場合 ・旧バージョンを、何らかの「ファイルを開くプログラム」として登録してある  - 「推奨されたプログラム」、もしくは「他のプログラム」に表示されている ・この「ファイルを開くプログラムを」新バージョンに切り替えたい ・プログラムの名称(実行ファイル名?)が「新旧バージョンで全く同一」の場合 ■例 fileapp.jpg ファイルを右クリックして「プログラムから開く」→「規定のプログラムの選択」を選んだところ ・*.c ファイルを開くのにVim7.1 を使っていた(規定のプログラム) ・*.cをエクスプローラから開いたときにVimが起動するように関連付けを行っていた ・Vim7.2を使うことにした(7.1は自作スクリプトとかあるので残しておきたい) ・*.cの関連付けを Vim7.1から Vim7.2 に変えたい ・上記例のウィンドウから「参照」を選んで、Vim7.2のexeファイルを選択しても、 推奨されたプログラムのVimは7.1を指しており、7.2に変更できない → 参照選んでVim7.2のパスを指定してOKしても、*.cを開くときはVim7.1が起動して困ったね、という状態 ここで、Vimは「プログラム」、バージョン7.2が「新バージョン」、バージョン7.1が「旧バージョン」、 「ファイルを開くプログラム」は「Vim7.1」、「ファイル」は「*.c」です。 ■回避策 ・レジストリエディタを開きます  - デスクトップのスタートアイコンをクリックし、検索窓から「regedit」と打ち、Enter レジストリの操作は、作業前にバックアップを取り慎重に行って下さい。 ・HKEY_CURRENT_USER\Software\Classes\Applications を開きます ・この下に「プログラム」の実行ファイル名があります ・HKEY_CURRENT_USER\Software\Classes\Applications\[実行ファイル名]\shell\open\command の既定値データが起動時の実行コマンドになってます ・「ファイルを開くプログラム」の一覧から削除するなら、[実行ファイル名]のキーをサブキーごと削除します ・実際に開くプログラムを変更するのであれば、データのパスを編集します → 今回の自分の例だと、Vim7.1のパスを7.2のパスに変更するだけ ■備考 ・単にうざったいから表示を消す等は推奨しません ・実行ファイル名でレジストリキーが登録されていたので、新たに登録しようとしたプログラムの実行ファイル名が既に登録されているものと同一だった場合、「既にあるから登録の必要がないよ」という動作と予想、上書きはしていないようだ ・フリーソフトとかで万一同じ名前の実行ファイル名があったりすると同じ問題が発生するかも、この場合プログラム自体が別々なので、厄介かもね ・「特定拡張子のファイルにだけ候補として出てくるプログラム」という登録の仕方もできるような気がするんだけど、そこまでは調査してません。多分拡張子ごとのキーに何かすればできるんだろうけど。
(function(document){ var pres = document.getElementsByTagName("pre") for(var i=pres.length; i--; ){  var el = makeOl(pres[i]) pres[i].appendChild(el) } function makeOl(pre){ var ol = document.createElement("ol") , li = document.createElement("li") , df = document.createDocumentFragment() , br = pre.innerHTML.match(/\n/g) ol.className = "preLine" ol.setAttribute("role", "presentation") for(var i=br.length; i--; ){ var li2 = li.cloneNode(true) df.appendChild(li2) } ol.appendChild(df) return ol } })(document)