Windows 10におけるカスケードメニューとファイルエクスプローラーのジャンプリストの問題

Windows 10でSubCommandsまたはExtendedSubCommandsレジストリキーを使用してファイルフォルダー(ディレクトリ)にカスケードメニューを実装すると、興味深いことが起こります。 カスケードメニューの最後の項目は、タスクバーのピン留めされたファイルエクスプローラーのショートカットを右クリックし、フォルダーウィンドウの代わりにジャンプリストのフォルダーをクリックすると実行されます。

このバグはMicrosoft Answersフォーラムで最初に報告されたものであり、そこに私の応答を見ることができます。後で他の2人のユーザーから報告されたので、私はこれについてブログ投稿を書くことにしました。

問題を再現するためのサンプルREGファイル

次の内容をメモ帳にコピーし、「mymenu.reg」として保存して実行します。

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\directory\shell\CustomMenu] "Icon"="shell32.dll, 39" "MUIVerb"="MyMenu" "SubCommands"="" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu1] "Icon"="c:\\windows\\system32\\cmd.exe, 0" @="Command Prompt" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu1\command] @="cmd.exe \"%1\"" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu2] "Icon"="c:\\windows\\system32\\cmd.exe, 0" @="Run Maintenance (Batch File)" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu2\command] @="D:\\Tools\\maintenance.bat"

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\directory\shell\CustomMenu] "Icon"="shell32.dll, 39" "MUIVerb"="MyMenu" "SubCommands"="" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu1] "Icon"="c:\\windows\\system32\\cmd.exe, 0" @="Command Prompt" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu1\command] @="cmd.exe \"%1\"" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu2] "Icon"="c:\\windows\\system32\\cmd.exe, 0" @="Run Maintenance (Batch File)" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu2\command] @="D:\\Tools\\maintenance.bat"

ファイルフォルダを右クリックすると、カスケードメニューが表示され、問題なく機能します。

バグ:タスクバーの[ファイルエクスプローラーのピン留め]項目を右クリックして、ジャンプリストのフォルダーをクリックすると、問題が発生します。 フォルダウィンドウを開く代わりに、カスケードメニューの最後のコマンド(この例では、「メンテナンスの実行」)が実行されます。 これはバグです。

回避策#1

「Folders」または「AllFileSystemObjects」レジストリキーの下にカスケードメニューを実装しても、この問題は発生しません。 ただし、フォルダーまたはAllFileSystemObjectsレジストリ領域に実装されている場合、このPC、ごみ箱などの仮想フォルダーと、圧縮フォルダーとファイルのメニューが表示されます。 ファイル、仮想フォルダー、圧縮(zip形式)フォルダーに表示されないようにするには、カスケードメニューでAppliesTo REG_SZ値を作成してチェックを追加します。

AppliesTo値のデータを次のように設定します。

 種類:ファイルフォルダーAND System.FileExtension: "。zip" 

レジストリ設定の改訂

 Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ Folder \ shell \ CustomMenu] "Icon" = "shell32.dll、39" "MUIVerb" = "MyMenu" "SubCommands" = "" "AppliesTo" = "kind:file folder AND System.FileExtension:\"。 zip \ "" [HKEY_CLASSES_ROOT \ Folder \ shell \ CustomMenu \ shell \ menu1] "Icon" = "c:\\ windows \\ system32 \\ cmd.exe、0" @ = "コマンドプロンプト" [HKEY_CLASSES_ROOT \ Folder \ shell \ CustomMenu \ shell \ menu1 \ command] @ = "cmd.exe \"%1 \ "" [HKEY_CLASSES_ROOT \ Folder \ shell \ CustomMenu \ shell \ menu2] "Icon" = "c:\\ windows \\ system32 \\ cmd.exe、0 "@ ="メンテナンスの実行(バッチファイル) "[HKEY_CLASSES_ROOT \ Folder \ shell \ CustomMenu \ shell \ menu2 \ command] @ =" D:\\ Tools \\ maintenance.bat "

回避策#2

記事の上部にあるサンプルREGファイルに、エクスプローラー%1を起動する3番目のメニューコマンドを含めます。

$config[ads_text6] not found
 [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu3\command]

@ = "explorer.exe \"%1 \ ""

ただし、常にカスケードメニューに表示されます。ジャンプリストでフォルダを選択すると、この項目(メニューの最後)が実行されます。

関連記事