AviUtl.exeなど実行ファイルを移動したときにファイルの関連付けが壊れる(規定のアプリのパス変更)
設定済みの「規定のアプリ」、パスを移動すると変更できなくなるらしい。
Windowsではソフトウェアが動くことは想定されていないっぽそう。
※「AviUtl」などの特定のソフトウェアではなく(一例)、任意の場所に置かれているexeファイルのお話です。
※「Program Files」配下のソフトウェアとは関係がありません(これはそもそも動かさないこと)。
※レジストリに詳しくない場合、万が一に対処できない人は、レジストリを弄らないこと!
経緯
1. ソフトを別のパスに移動する
2. 移動したソフトを規定のアプリとして設定しようとする
3. 規定のアプリへの変更が適用されない(=パスが更新できない)
今回は「M:\aviutl110\aviutl.exe」を「M:\Apps\aviutl110\aviutl.exe」に移動した。
(任意の場所に置く系のソフトウェアを、ドライブ直下に置くのをやめた。あまりに多すぎて見栄えが悪かったので)
https://scrapbox.io/files/67e2ec02c1b10e5cc006f815.png
(アイコンが表示されない=パスが存在しないまま で、ファイルを開くことができない)
NG: 試したこと
一度関連付けを別のものにする → もう一度パスから指定する
関連付けをレジストリから削除する → もう一度パスから指定する
設定の「アプリ」>「規定のアプリ」から「規定を選択する」もしくは「ファイルの種類で規定値を選択する」
→ すべて開けず
起こった挙動
「.aup」ファイルを開くことができない ← まだわかる
「aviutl.exe」が規定のアプリにずっと残ったままになる(元あるexeパスの紐づけが解除されない)
そもそも変更ボタン(常に使う)が表示されなくなる ※1
新しいパスを指定しても、以前のexeのパスが残ったままになってしまう(パスを上書きできない)※2
パスが正常な時は〝アイコンあり〟で、存在しない時は〝アイコンなし〟になる※3
ここからわかることは、
多分おそらくめいびーこれはプログラムの名前か何かで解決されていて ※3
それ自体のパス更新を入れることが想定されていなくて ※2
上記エラー時には、規定が変更できなくなるおまけつき(「絶対にプログラムがそのパスに存在する」という前提のもとシステムがつくられている)※1
おいおいおいおい……。
ただし、パスが変わってもタスクバーのピン留めからは 問 題 な く ソ フ ト が 起 動 す る 。
https://scrapbox.io/files/67e2fd8c2efdec9d93db0720.png
(↑これは無傷)
何が起こっているのか
ここ を見てみると、
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\<.拡張子>
あたりが「規定のアプリ」としての設定らしい。
このレジストリの「UserChoice」を見てみると、どうやら「ProgId」というもので管理されている模様。
https://scrapbox.io/files/67e2efe1cca0f57f6a6e255b.png
「UserChoice」にあるのは正式なパスではなく、「Applications\aviutl.exe」となっている。
「Applications\<ソフト名>」で名前解決しているっぽい。
これが解決できていないらしい。
ってことは規定のアプリを変更する操作では、この ProgId のパスの変更がされない……?
ProgId の名前解決はどこにあるのか
どうやら、
HKEY_CLASSES_ROOT\Applications\<ソフト名>
HKEY_CURRENT_USER\Software\Classes\Applications\<ソフト名>
などにある模様。これもレジストリ。
https://scrapbox.io/files/67e2edab9ad69c8f7dcd052a.png
案の定、名前解決がここで行われており、「shell\open\command」のパスが古いまま(M:\aviutl110\aviutl.exe)。
解決
さっきの関連付け「~\FileExts\」にある「.aup」と、「~\Applications\」にある「aviutl.exe」を消してから、
もう一度パスを指定してみると……、ちゃんと関連付け直すことができた。
https://scrapbox.io/files/67e2f979343e3d97bc5d481d.png
(アイコンが表示され、正しく開ける状態になった)
ああ、またしても致命的なバグに出会ってしまったのね私。
数年の間に何度か悩まされたわよこの問題。そういえば前回どうやって解決したっけ(時間?)。
うーん、この。私のWindowsの印象が、数ヶ月に1度レジストリをいじらないとどうにもできないOS になっちゃってるんだけれど、もうちょっとなんとかならないんだろうか……。
さらに調べてみると、同じ問題に当たった人がいたらしい。
https://www.glamenv-septzen.net/view/14
おいおいおいおい……このバグ16年以上も前から存在してるのかい。
#技術メモ #Windows