こんにちは、阿久津です。以前の記事で<送る>メニューに関するいくつかのチューニングを紹介しました。そもそも同項目は、任意のファイルを関連付けされていないアプリケーションで開く場面を想定し、用意された機能ですが、Windows Vistaには<プログラムから開く>メニューが用意されているため、以前ほど重要ではありません。

つまり<送る>メニューを活用していないユーザーには、無用の長物となるだけでなく、若干の弊害となることにお気づきでしょうか。同項目にアクセスしますと、実フォルダである「%appdata% \ Microsoft \ Windows\SendTo」へのアクセスが最初に発生(それ以降はキャッシュされます)し、若干のパフォーマンスダウンが発生いたします。

そもそもコンテキストメニュー(ファイルやフォルダといったオブジェクトを右クリックすると表示されるメニュー)を開く際は、対象となるオブジェクトの情報をレジストリから読み出すため、若干のディレイが発生します。ファイルを右クリックすると若干の間が発生するのが、この現象です。この問題を解決する方法はひとつ。コンテキストメニューに並ぶアプリケーション項目や、不要な機能を削除するというもの(図1~2)。

図1: 例えば画像ファイルを右クリックしますと、いくつかのアプリケーション項目や機能項目が並びます

図2: レジストリ情報をトレースしますと、シェルであるExplorer.exeが各レジストリ値にアクセスしていることが確認できます

もちろんコンテキストメニューに項目が並んでいれば、それだけ使いやすいため利便性は向上しますが、パフォーマンスと利便性はトレードオフの関係にありますので、どちらを選択するかはユーザー次第。コンピュータの能力と相談しながらお選びください。ひとまず今回は、このコンテキストメニューに並ぶ標準機能を無効にするチューニングをご紹介します。

<送る>メニューを削除する

今回はJPEGファイル(拡張子「.jpg」)を対象に項目を整理しましょう。まずは、クイック検索やファイル名を指定して実行などから「regedit」を実行してレジストリエディタを起動し、HKEY_CLASSES_ROOT \ AllFilesystemObjects \ shellexまでキーをたどって開きます。次に「ContextMenuHandlers」キーを選択した状態で、<ファイル>メニューから<エクスポート>を選択してください。ダイアログが表示されたら任意のファイル名を付けて<保存>ボタンをクリックします。これでレジストリキーのバックアップが完了しました。今度はサブフォルダにある「Send To」キーを選択してから右クリックし、メニューから<削除>を選択しましょう。確認をうながすダイアログが表示されたら<はい>ボタンをクリックします。最後に[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディタを終了してください。これで設定完了です(図3~6)。

図3: 「ファイル名を指定して実行」や「クイック検索」のテキストボックスに「regedit」と入力して[Enter]キーを押します

図4: HKEY_CLASSES_ROOT \ AllFilesystemObjects \ shellexまでキーをたどって開き、「ContextMenuHandlers」キーを選択した状態で、<ファイル>メニューから<エクスポート>を選択します

図5: ダイアログが表示されたら、任意のファイル名を入力して、<保存>ボタンをクリックします。これでキーをファイルにバックアップしました

図6: 「Send To」キーを右クリックし、メニューから<削除>を選択。確認をうながすダイアログが表示されたら<はい>ボタンをクリックします。その後[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディタを終了させます

この状態で任意のJPEGファイルを右クリックしますと、メニューから<送る>メニューが消えました。つまり同項目は、HKEY_CLASSES_ROOT \ AllFilesystemObjects \ shellex \ ContextMenuHandlers \ Send Toキーから参照しているクラスID「{7BA4C740-9E81-11CF-99D3-00AA004AE837}」で実現されており、そのリンクを消すことで機能が呼び出されず、同項目も表示されないということです(図7)。

図7: チューニング後はコンテキストメニューから<送る>が削除されます

<以前のバージョンの復元>を削除する

「ContextMenuHandlers」キーにはこのほかにもいくつかの項目がありますので、あわせて設定を行ないましょう。

先の手順を参考にレジストリエディタで、HKEY_CLASSES_ROOT \ AllFilesystemObjects \ shellex \ ContextMenuHandlersキーを開き、「{596AB062-B4D2-4215-9F74-E9109B0A8153}」キーを右クリックします。メニューから<削除>を選択し、確認をうながすダイアログが表示されたら<はい>ボタンをクリックします。最後に[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディタを終了してください。これで<以前のバージョンの復元>メニューが消えました(図8~9)。

図8: 「ContextMenuHandlers」キーにある「{596AB062-B4D2-4215-9F74-E9109B0A8153}」キーを右クリックし、メニューから<削除>を選択します。確認をうながすダイアログが表示されたら<はい>ボタンをクリック。その後[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディタを終了させます

図9: チューニング後はコンテキストメニューから<以前のバージョンの復元>が削除されます

キーの場所は違いますが、<プログラムから開く>メニューは、HKEY_CLASSES_ROOT \ * \ shellex \ ContextMenuHandlersキーにある「Open With」キーを削除すれば、メニューから消すことができます。前述の手順と同じように、あらかじめレジストリキーをバックアップしてから実行してください。

<デスクトップの背景として設定>を削除

最後に<プレビュー><右周りに回転><左周りに回転><デスクトップの背景として設定>という項目を削除しましょう。これらは「Windowsフォトギャラリー」によって作成されるメニュー項目ですので、AllFilesystemObjectsキーでは削除できません。Windows Vistaにはシェル拡張機能をクラスID単位で無効にすることができますので、その手順を紹介します。

先の手順を参考にレジストリエディタで、HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Shell Extensions \ Approvedキーを開きます。右ペインにある文字列値「{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}」を選択して[F2]キーを押し、値名をコピーしましょう。

次にShell Extensionsキーを選択した状態で、<編集>メニューから<キー>を選択。名前を「Blocked」に変更します。今度はBlockedキーを開き、右ペインの何もないところを右クリック。メニューから<新規>→<文字列値>と選択し、名前を先ほどコピーした「{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}」に変更します。ちなみに、Blockedキーが事前にある場合は作成手順を飛ばし、文字列値「{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}」のみ作成してください。最後に[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディタを終了すれば作業完了です(図10~12)。

図10: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Shell Extensions \ Approvedキーにある「{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}」キー名をコピーします

図11: 編集メニューから<新規>→<キー>と選択し、Shell Extensionsキーの下にBlockedキーを作成します

図12: Blockedキー内に文字列値「{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}」を作成します。その後[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディタを終了させてください

これでコンテキストメニューから、<プレビュー><右周りに回転><左周りに回転><デスクトップの背景として設定>と、4つの項目が削除されました(図13)。

図13: チューニング後はコンテキストメニューから<プレビュー>をはじめとするいくつかの項目が削除されました

次回はアプリケーションが作成した項目を削除するチューニングにチャレンジします。ご興味のある方は是非ご覧ください。

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

阿久津良和(Cactus)