こんにちは、阿久津です。おかげさまで本連載が復活して100回目を迎えることができました。これもご愛読頂いた読者方々のおかげです。今後も便利なレジストリチューニングを紹介していきますので、改めてよろしくお願いします。

さて、デスクトップの何もないところを右クリックすると表示されるコンテキストメニュー。Windows 7では、従来(Windows XP)の<新規作成>や<最新の状態に更新>といった項目に加え、<画面の解像度><ガジェット><個人設定>が並ぶようになりました。また、場合によってはGPUメーカーが独自に加えるメニュー項目も並びます(図01)。

図01: デスクトップの何もないところを右クリックすると表示されるコンテキストメニュー。Windows 7ユーザーには見慣れた項目が並んでいます

このメニュー項目を管理しているのが、HKEY_CLASSES_ROOT \ Directory \ Backgroundキー。サブキーとなるshellキーでは、項目の大本となるcmdキーに各設定情報(を持つエントリ)を格納し、commandキーで実行するコマンドをエントリとして保持しています。以前の連載で述べたように、[Shift]キーを押したときに項目を表示させる文字列値「Extended」と、作業ディレクトリが存在しないことを示す文字列値「NoWorkingDirectory」の2エントリが格納されていることを確認できました(図02~03)。

図02: HKEY_CLASSES_ROOT \ Directory \ Background \ shellキーでは旧来型のシェル拡張情報を格納し、メニュー項目を実現しています

図03: HKEY_CLASSES_ROOT \ Directory \ Background \ shell \ cmdキーを開きますと、メニュー項目に対する情報が格納されています

一方、HKEY_CLASSES_ROOT \ Directory \ Background \ shellexキーは、コンテキストメニューの管理を意味するサブキーとして、ContextMenuHandlersキー用意し、そのサブキーに項目名を持つサブキーを設けて、クラスIDを用いた機能の呼び出しを行なっています(図04)。

図04: HKEY_CLASSES_ROOT \ Directory \ Background \ shellex \ ContextMenuHandlersキーはメニューハンドラーとクラスIDを用いて、メニュー項目を実現しています

このようにデスクトップのコンテキストメニューは、HKEY_CLASSES_ROOT \ Directory \ Backgroundキー下で管理されています。ただし、すべてのフォルダーを対象とするHKEY_CLASSES_ROOT \ Folderキーや、すべてのファイルやフォルダーを対象とするHKEY_CLASSES_ROOT\*キーのエントリが影響を及ぼすこともありますが、今回は同Backgroundキーを対象に、様々なチューニングを行ないましょう。まずはコンテキストメニューに<ごみ箱を空にする>を追加します。

1.[Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力してから<OK>ボタンをクリックします。
2.レジストリエディターが起動したら、HKEY_CLASSES_ROOT \ Directory \ Backgroundキーまでたどって開きます。
3.shellキーを選択した状態で、メニューから<新規>→<キー>と選択します。
4.キーの名称を「empty」などわかりやすいものに変更します。
5.右ペインの何もないところを右クリックし、メニューから<新規>→<文字列値>と選択します。
6.エントリ名を「CommandStateHandler」に変更したら、ダブルクリックします。
7.ダイアログが起動したら、値のデータに「{c9298eef-69dd-4cdd-b153-bdbc38486781}」と入力して<OK>ボタンをクリックします。
8.ステップ05~07を参考に文字列値「Description」を作成し、値のデータを「@shell32.dll,-31332」とします。
9.ステップ05~07を参考に文字列値「Icon」を作成し、値のデータを「shell32.dll,-254」とします。
10.ステップ05~07を参考に文字列値「MUIVerb」を作成し、値のデータを「@shell32.dll,-10564」とします。
11.今度はステップ03~04で作成したemptyキーを選択した状態で、メニューから<新規>→<キー>と選択します。
12.ステップ05~07を参考に文字列値「DelegateExecute」を作成し、値のデータを「{48527bb3-e8de-450b-8910-8c4099cb8624}」とします。
13.[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディターを終了します。

これでチューニング終了です(図05~23)。

図05: [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力して<OK>ボタンをクリックします

図06: レジストリエディターが起動したら、HKEY_CLASSES_ROOT \ Directory \ Background \ shellキーまでたどって開き、shellキーを選択した状態で、メニューから<新規>→<キー>とクリックします

図07: キー名を「新しいキー #1」から「empty」などわかりやすい名称に変更してから、同キーを選択します。右ペインの何もないところを右クリックし、メニューから<新規>→<文字列値>と選択します

図08: 文字列値「新しい値 #1」の名称を「CommandStateHandler」に変更します

図09: 文字列値「CommandStateHandler」をダブルクリックで開き、値のデータに「{c9298eef-69dd-4cdd-b153-bdbc38486781}」と入力して<OK>ボタンをクリックします

図10: 右ペインの何もないところを右クリックし、メニューから<新規>→<文字列値>と選択します

図11: 文字列値「新しい値 #1」の名称を「Description」に変更します

図12: 文字列値「Description」をダブルクリックで開き、値のデータに「@shell32.dll,-31332」と入力して<OK>ボタンをクリックします

図13: 右ペインの何もないところを右クリックし、メニューから<新規>→<文字列値>と選択します

図14: 文字列値「新しい値 #1」の名称を「Icon」に変更します

図15: 文字列値「Icon」をダブルクリックで開き、値のデータに「shell32.dll,-254」と入力して<OK>ボタンをクリックします

図16: 右ペインの何もないところを右クリックし、メニューから<新規>→<文字列値>と選択します

図17: 文字列値「新しい値 #1」の名称を「MUIVerb」に変更します

図18: 文字列値「MUIVerb」をダブルクリックで開き、値のデータに「@shell32.dll,-10564」と入力して<OK>ボタンをクリックします

図19: 図08で作成したemptyキーを選択した状態で、メニューから<新規>→<キー>とクリックします

図20: キー名を「新しいキー #1」から「command」に変更してから、同キーを選択します。右ペインの何もないところを右クリックし、メニューから<新規>→<文字列値>と選択します

図21: 文字列値「新しい値 #1」の名称を「DelegateExecute」に変更します

図22: 文字列値「DelegateExecute」をダブルクリックで開き、値のデータに「{48527bb3-e8de-450b-8910-8c4099cb8624}」と入力して<OK>ボタンをクリックします

図23: あとは[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディターを終了します

それでは結果を確認しましょう。デスクトップの何もないところを右クリックしますと、コンテキストメニューに<ごみ箱を空にする>という項目が追加されました。このとき、ごみ箱にファイルやフォルダーが入っている場合、項目の配色が変化して選択可能になります。そのまま同項目を選択しますと、通常の「ごみ箱」アイコンに対する操作と同じく、ごみ箱を空にするか確認をうながすダイアログが起動しますので、削除する場合は<はい>ボタンをクリックしてください(図24~26)。

図24: デスクトップの何もないところを右クリックしますと、コンテキストメニューに<ごみ箱を空にする>が加わりました。ごみ箱が空の場合、項目を選択できません

図25: ごみ箱にファイルやフォルダーが格納されている場合、<ごみ箱を空にする>が選択可能になります

図26: 同項目を選択しますと、ごみ箱の内容を削除するか確認をうながすダイアログが起動します。必要に応じて適切なボタンをクリックしてください

このように「ごみ箱」アイコンの機能を、コンテキストメニュー上で実現できました。本来ならここでチューニング内容の解説に移りたいところですが、文字数も尽きてしまいましたので、解説やほかのチューニングは次回の記事をご覧ください。

それでは、また次号でお会いしましょう。

阿久津良和(Cactus)