PowerShell とコマンドプロンプトをメニューの前面に持っていきつつカスケード表示させます。
-
レジストリキーを作成します。console のところは任意の名前です。
HKCU\SOFTWARE\Classes\Directory\shell\console
-
SubCommands(文字列値)を作成。
-
SubCommands にデータを入力します。
Windows.MultiVerb.Powershell;Windows.MultiVerb.PowershellAsAdmin;Windows.separator;Windows.MultiVerb.cmd;Windows.MultiVerb.cmdPromptAsAdministrator
この状態でフォルダーを右クリックするとすでにメニューが表示されています。
-
見栄えが良くないので装飾します。
HKCU\SOFTWARE\Classes\Directory\shell\console
- Icon (文字列値)を作成して値のデータを imageres.dll,-5323 にします。
- MUIVerb (文字列値)を作成して値のデータを @shell32.dll,-31747 にします。
-
次のキーにも 2~4 までを繰り返します。
HKCU\SOFTWARE\Classes\Directory\Background\shell\console
HKCU\SOFTWARE\Classes\Drive\shell\console
-
メニューの出現場所は Windows PowerShell 及びコマンドプロンプトと同じです。
付注
-
コマンド プロンプトを管理者として開くがグレーアウトされて動作しません。
-
デスクトップ上でのみPowerShell を開くが動作しません。
どちらも原因不明です。実用に際しては SubCommands の Windows.MultiVerb.cmdPromptAsAdministrator を削除して利用してください。
[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
CommandStore の機能を呼び出すには SubCommands へ CommandStore/shell/ のレジストリキー名を追加していきます。
SubCommands に複数記述するには ; (セミコロン)でつなぎます。
セパレータの表示は Windows.separator または、| (バーティクルバー)です。
console キーに Extended (文字列値)を追加すると [SHIFT] を押した場合のみメニューが表示されます。あまり使わない場合は Extended を追加して裏面に回してください。
"Extended"=""
少し複雑になりますが、SubCommands を使ってメニューをさらにネストすることも可能です。いろいろ工夫してみてください。