2022年12月1日木曜日

Windows10 のコンソールをまとめてカスケードメニューにする

PowerShell とコマンドプロンプトをメニューの前面に持っていきつつカスケード表示させます。

  1. レジストリキーを作成します。console のところは任意の名前です。

    HKCU\SOFTWARE\Classes\Directory\shell\console

    Classes\Directory

  2. SubCommands(文字列値)を作成。

  3. SubCommands にデータを入力します。

    Windows.MultiVerb.Powershell;Windows.MultiVerb.PowershellAsAdmin;Windows.separator;Windows.MultiVerb.cmd;Windows.MultiVerb.cmdPromptAsAdministrator

    この状態でフォルダーを右クリックするとすでにメニューが表示されています。

  4. 見栄えが良くないので装飾します。

    HKCU\SOFTWARE\Classes\Directory\shell\console

    • Icon (文字列値)を作成して値のデータを imageres.dll,-5323 にします。
    • MUIVerb (文字列値)を作成して値のデータを @shell32.dll,-31747 にします。

  5. 次のキーにも 2~4 までを繰り返します。

    HKCU\SOFTWARE\Classes\Directory\Background\shell\console

    HKCU\SOFTWARE\Classes\Drive\shell\console

  6. メニューの出現場所は Windows PowerShell 及びコマンドプロンプトと同じです。

付注

  • コマンド プロンプトを管理者として開くがグレーアウトされて動作しません。

  • デスクトップ上でのみPowerShell を開くが動作しません。

どちらも原因不明です。実用に際しては SubCommandsWindows.MultiVerb.cmdPromptAsAdministrator を削除して利用してください。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\shell\console]
"Icon"="imageres.dll,-5323"
"MUIVerb"="@shell32.dll,-31747"
"SubCommands"="Windows.MultiVerb.Powershell;Windows.MultiVerb.PowershellAsAdmin;Windows.separator;Windows.MultiVerb.cmd;Windows.MultiVerb.cmdPromptAsAdministrator"

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Background\shell\console]
"Icon"="imageres.dll,-5323"
"MUIVerb"="@shell32.dll,-31747"
"SubCommands"="Windows.MultiVerb.Powershell;Windows.MultiVerb.PowershellAsAdmin;Windows.separator;Windows.MultiVerb.cmd;Windows.MultiVerb.cmdPromptAsAdministrator"

[HKEY_CURRENT_USER\SOFTWARE\Classes\Drive\shell\console]
"Icon"="imageres.dll,-5323"
"MUIVerb"="@shell32.dll,-31747"
"SubCommands"="Windows.MultiVerb.Powershell;Windows.MultiVerb.PowershellAsAdmin;Windows.separator;Windows.MultiVerb.cmd;Windows.MultiVerb.cmdPromptAsAdministrator"

解説

Windows がエクスプローラーのリボンで使用している CommandStore を応用しています。

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore

ribbon

CommandStore の機能を呼び出すには SubCommandsCommandStore/shell/ のレジストリキー名を追加していきます。

SubCommands に複数記述するには ; (セミコロン)でつなぎます。

セパレータの表示は Windows.separator または、| (バーティクルバー)です。

console キーに Extended (文字列値)を追加すると [SHIFT] を押した場合のみメニューが表示されます。あまり使わない場合は Extended を追加して裏面に回してください。

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\shell\console]
"Extended"=""

少し複雑になりますが、SubCommands を使ってメニューをさらにネストすることも可能です。いろいろ工夫してみてください。