Windows 7のナビゲーション ウィンドウを比較的安全にカスタマイズ

ネタ自体はインストール後最初にやりたくなることで何を今更な話。が、ググるとHKEY_CLASSES_ROOTを開いてアクセス権を変更して……とかばっかりだったので、HKEY_CURRENT_USER以下で大概なんとかなるのでそっちでやろうという話。せっかくCLSID以下はなかなかいじれないようになっているのに……みたいな宗教。嘘かもしれない。

マイコミジャーナルのWindowsスマートチューニングとかに書かれているやり方はHKEY_LOCAL_MACHINEかHKEY_CLASSES_ROOT以下をいじる方法で、デフォルトの状態に復活させるのがとても面倒。レジストリのキーを書きだしてバックアップ……とかやりたくない。実はHKEY_CLASSES_ROOT以下はHKEY_CURRENT_USER\Software\CLASSES以下のキーとHKEY_LOCAL_MACHINE\Software\Classes以下のキーがマージされたもの(多分)で、同じキーがあった場合HKEY_CURRENT_USER側のキーで上書きされる(HKEY_CURRENT_USER以下の方が優先度が高い)ので、こちらをゴリゴリいじってやればいろいろできる。XPでもそうだった気がするけど、うろ覚え。なので、ナビゲーション ウィンドウからホームグループを消したい場合は、

HKEY_CURRENT_USER\Software\Classes\CLSID\{031E4825-7B94-4dc3-B131-E946B44C8DD5}\ShellFolder

まず以上のキーを作る。そしてそこにAttributesというDWORD値を作成し、そのデータを16進でb090010dにすれば良い(要エクスプローラーの再起動)。

AttributesというDWORD値を作成し、そのデータを16進でb090010dにする

当然アクセス許可や所有権の変更などは必要ない。安全ですね!インストール直後の状態に戻したい場合はバッサリと削除するだけ。簡単ですね!

コンテキストメニューから送るを削除するとかにも使える。

HKEY_CURRENT_USER\Software\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers\SendTo

というキーを作成し、既定のデータを空にするだけ。(値の指定なし)という状態ではダメなので注意。

他にはコントロールパネルの既定のプログラムあたりでgVimを.txtに関連付けたけど、コマンドラインオプションが使えなくてイラッとするとかいう場合も、

HKEY_CURRENT_USER\Software\Classes\Applications\gvim.exe\shell\open\command

を開いて、そこでコマンドラインオプションを適宜追加してやったりすると幸せになれる。Windows 7とかではコントロールパネルの既定のプログラムで関連付けのベースを作って、このあたりのキーをゴニョゴニョいじって細かいコマンドラインオプションの設定やアイコンの変更を行う方が、巷に溢れている関連付けカスタマイズツールを使うよりは多少安全な気がする。

突然思いついたように更新再開してみる。どういう文体で書いていたのか忘れたので、フランクな感じで書くことにした。Perlのモジュールが全然足らなくてエントリ書き終わってからアップロードするまで一時間くらいかかった気がする。rやinstall hogehogeしまくった結果、cpanはSSDでもたいして速くならないという教訓を得た。次のエントリは「とりあえずnircmd elevateでどうにかなるよ!」とかいう話……は三行くらいで終わってしまいそうなので書かない。

" VoiceOver current buffer filename
command! VoiceOver !start nircmd speak text %:p:t

nircmd楽しいね!