2011年8月5日金曜日

コンピューターアイコンに便利な機能を付ける 1.2

大雑把で恐縮ですがカスタマイズした内容の説明です。

HKEY_CLASSES_ROOT\CLSID\ 以下のキーのほとんどは、Windows7の標準では編集できなくなっていますが、例外として

コンピューター アイコンの右クリックメニュー
{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell
ごみ箱 アイコンの右クリックメニュー
{645FF040-5081-101B-9F08-00AA002F954E}\shellshellex

などのごく一部はそのまま編集可能になっています。


これは、この部分に機能を追加する多くのアプリケーションとの互換性を考慮したものと思われます。
前々回にこの部分を使用したのも、煩わしい所有権の変更をする必要がないためです。(Findは見落としていましたが)

CLSIDについては、一部ですが、MSDN などに載っていますし、キーの既定値からおおよそ推測したりできます。

ShellDevmgrDiskmgmt キーなどは、好きな名前にできます。

HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell

右クリックメニューがこの順番で並びますので、a ,b ,c や 01 ,02 ,03 と付けてみるのもいいかもしれません。
任意の順で並べ替えることもできますが、ここでは割愛します。

Devmgrキーなどの 既定値のデータが実際に表示される名前になります。

HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Devmgr

@devmgr.dll,-4 でDLLの中の文字列 (デバイス マネージャー)を指定しています。
リソースツールなどで日本語の文字列を探す場合は、devmgr.dll.mui を調べます。
日本語で「デバイス マネージャー」と入力しても同じ結果になります。
MUIVerb 値を追加するとそちらが優先して表示されます。

MUIVerb

Icon 値でメニューのアイコンを指定しています。
DLLの中の文字列やアイコンは、リソースツールなどで調べることもできますが、ほとんどは、Windows が初めから設定している、スタートメニューやレジストリを参考にしています。

例えば、デバイス マネージャーは以下のキーで設定されていますので、それを参考にしました。
HKCR\CLSID\{74246bfc-4c96-11d0-abef-0020af6b0b7a}

Command キーの既定値のデータが実行されるコマンドです。

Command

%SystemRoot%\system32\NOTEPAD.EXEなどにするとメモ帳が起動します。

この、Command キーの既定値や上のデバイスマネージャーの文字表示のところは、通常は文字列値 (REG_SZ)ではなく、展開可能な文字列値 (REG_EXPAND_SZ)になっています。

ブログに載せるのに都合が悪いので文字列値にしていますが、管理ツールなど、展開可能な文字列値 でないと動作しないものもあります。