2011/12/04

[win]assocとftypeだけでは関連づけが取り戻せない?

以前、こんな記事を書いた。
http://hiro99ma.blogspot.com/2011/11/win.html
さっき、QtCreatorをインストールしたのだが、CやらHやらがQtCreatorにとられてしまった。
Qt、おまえもか・・・とは思ったが、それほどあせらない。
assocとftypeで取り戻せばいいからだ。
が・・・取り戻せない。
assocもftypeも、設定したテキストエディタを指しているのだが、肝心なExplorerがQtCreatorを指したままになっている。
ログオフも再起動もやったのだが、変わらず。
assocとftype以外に、何か要素があるのだろうか?
そもそも、QtCreatorがインストールされてExplorerがQtCreatorを指しているときから、assocは変更されていない。
つまり、最初からassocは無視されているのだ。


こちらに、関連づけがどう動作しているのか説明された文書があった。
http://www.glamenv-septzen.net/view/14
.Hファイルを例に見ていこう。
QtCreatorインストール前は、EmEditorに割り当てられていた。
HKLM\SOFTWARE\Classes.hというキーがあり、そこに(既定)として「emeditor.h」が登録されていた。
emeditor.hというキーもあり、(既定)は「Hファイル」になっている。
openもEmEditor.exeになっている。
うーん・・・。
うん?
.hキーの下に「PersistentHandler」というキーがある。
削除するといけるか・・・だめか。
Explorerのフォルダオプションで見ると拡張子Hは「C++ Header file」なのだが、ヘッダファイルを右クリックして開くプロパティから見ると「Hファイル」になっている。
emeditor.hは「Hファイル」なのでプロパティとは一致しているのだが、フォルダオプションとは違っている。
他のも見てみると、H++なんて拡張子もQtCreatorに関連づけられているのだが、Classes以下にはそんなキーはない。
つまり、キーがなくても関連づけをできる仕組みがあるということだ。


おっと、上のリンク先の続きを見ると、auto_fileというしくみもあるようだ。
これは自動で関連づけするものらしい。 レジストリエディタで検索をすると、HKEY_LOCAL_MACHINEの下ではなく、HKEY_USERS\(ユーザID)\Software\Classesの下にあった。
なるほど、こちらが優先されるのか・・・。
HKEY_CLASSES_ROOTを見ると、確かにそうなっている。
assocやftypeはこっちを操作してくれないってことですかね。
試しに、HKEY_CLASSES_ROOT\.hを削除してみた。
フォルダオプションはEmEditorに戻った。
Hファイルのプロパティはまだqtcreatorになっているが、ダブルクリックするとEmEditorが起動した。
再起動すれば直るんだろう。
auto_fileキーのみを削除してみたが、これだと関連づけがなくなってしまうだけだった。
やはりHKEY_CLASSES_ROOTから拡張子のキーを削除してやらんといかんらしい。
しかし、それはそれで危険だなぁ。
HKEY_USERS\(ユーザID)\Software\Classesの下にある方を削除すれば、少なくともassocなどの設定が削除されることはないんだろうけど、すっきりしない。

というところまで調べてネットで検索すると、同じことをやってる人がいた。
まあ、そうだよねぇ。。。
EmEditorでも関連づけができるのでやってみると、HKEY_USERS\(ユーザID)以下にある方を書き換えていた。
ユーザごとに拡張子の関連づけを変更するんだったら、それしかないというところか。
しかし、それを設定する方法が標準で提供されていないのがつらいところだ。
ならば作るまでよ!
というわけで、あれこれ迷いながら作成。
assocなどは使えないので、レジストリのインポート用ファイルを作ることにした。
UTF-16LEで保存する方法がわからなかったので、こちらからいただきました。ありがとうございます。
VBScriptでまとめてしまえばいいんだろうけど、もういいや。
使いたい方は、batファイルの中身を必ず書き換えてから使ってください。
動かんごとなっても、責任はとらんのであしからず。
デフォルトだと、うちの拡張子割り当てになるし、デフォルトのインストールパスなわけでもないので動かんでしょう。
また、そのままだとreg.regというファイルを作るだけなので、自分でレジストリに登録してください。
めんどうなら、自動でそこまでやってもいいんでないですかね。
https://sites.google.com/site/hiro99ma/home/windows/%E6%8B%A1%E5%BC%B5%E5%AD%90.zip?attredirects=0&d=1



うーん、新規作成にテキストファイルが出てこなくなった・・・。
Tweakなどで追加しても出てこない。
まずいなぁ。
まずいかも。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。