Windowsでは、Shift+右クリックメニューで表示内容が変わる。 MacOS(旧OSX)では、Optionを押すと右クリックメニューが変わる。
Shift + 右クリック( ShellEx)
右クリックメニュー(コンテキスト・メニュー)はすべて表示される。
右クリックメニュー(Shell)
右クリックメニューは通常使わないものを消しておくとスッキリする。
Shift+右クリック、知名度低すぎ?
色んな人のWindowsの使い方を見る機会があるのだけど、ほとんど認知されていなのが、Shift+右クリックメニュー。
ExcelでさえShift+右クリックを諦めた。
昔は、ExcelのメニューもShift+右クリックがあった。貼り付けオプション(形式選択して貼り付け)が、それだった。エクセルもShift+右クリックだった。しかし、認知されなくて、アイコン化された。
このエクセルのShift+右クリックメニュー廃止が、成功例としてエクスプローラーのメニューの今後の方向性になるのかと思ってたらWin11でそうだった。
win11 の方向性は悪くないが。
Win11ではどうなったのだろうか。というと、更に劣化していそうである。
「ユーザーが右クリックメニューを編集する機能」が必要だったと思う。
個人用PCでは問題ないが、レジストリを触れないため職場PCなどで不自由が生じていることは多分解決しない。
Shift+右クリックメニューで表示されるベンチ入り選手と、右クリックで表示されるスタメンの入れ替え機能がWin11には欲しかった。
アイコン表示じゃないんだよ。本当に必要なのは。
ベンチ入り・スタメン入れ替え機能が欲しかった。
本当にほしいのは、右クリックメニューの編集機能だったと思う。スタメンとベンチ入りと2軍の編集機能だったと思う。
しかし、右クリックメニューのClassesは多岐にわたるため、一般ユーザー向けではないと判断されたのだろうか。レジストリ変更を伴うから仕様変更が困難だと判断されたのだろうか。残念である。
Win10でユーザーチョイスで関連付けを変更ができるようになったのだから、右クリックメニューの編集機能が欲しかったのよねぇ。
Shift+右クリックメニューの編集方法
ShellMenuView というソフトウェアが、手軽に編集をさせてくれる。
https://www.nirsoft.net/utils/shell_menu_view.html
コレを使うと、スタメン落ち・2軍行きを切替え可能だ。
- 該当項目を
Set Extended Mode
するとShift+右クリック(スタメン落ち) - 該当項目を
Disable Selected Item
するとメニューから抹消(2軍行き)
とできる。
項目が見つからないときは検索する
スタメン落ちとはShift+右クリックメニューが必要な項目とすることで、Shell->Shellex に変えるレジストリ操作に相当する。
2軍行きとは、メニューを非表示にする操作を意味し、項目は残すが、LegacyDisableキー追加するレジストリ操作に相当する。
LegacyDisableではなく、今どきは HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked
にエントリを追加するほうが良いかもしれないが。
レジストリ操作で消せるもの消したい。
レジストリ操作で消せるもの消してスッキリしたい
消せるものは極限まで消しておきたい。
Create Shortcut(ショートカット作成)は消せないし、送るメニューも消すことは出来ない。
レジストリで消せるものは限界まで消しておきたい。
ドキュメント類の制作の邪魔になるメニュー項目。
私は、たまに操作説明手順の書類を作るのだが、右クリックメニューが多すぎると、操作説明手順書が作りにくい。
余計なもの(VLCやVSCode)が右クリックメニューにあると、スクショを編集したり、紛らわしい右クリックメニューが入っていると、操作手順を変えたものを説明する必要が出てきて面倒くさい。
スッキリしたメニューがよい
右クリックメニューに気軽に登録してくるマナーの悪いアプリケーションは嫌いです。
私達が本当に必要な右クリックメニュー
私達が本当に「必要な」右クリックメニューとは、ファイルを開くアプリケーションを選べることではないか。
例えば、.gitignore を開けるもの
例えば、package.json を開けるもの
例えば、Zipファイルを開くアプリケーションを選ぶ
こういうことではないか。右クリックメニューにアプリケーションが居座るのって整理出来てなくないか。
レジストリの探索方法
shmnview.exe
でも消せない事があるので、そのときはレジストリを探索する。その場合知っておくべきことがある。
関連付けや右クリックメニューは、HKEY_CLASSES_ROOT(HKCR) になるが、HKCRはHKCUとHKCMを合成して表示するように再計算されたもの。
コレを知っておく必要がある。
HKEY_CLASSES_ROOT = HKEY_CURRENT_USER + HKEY_CURRENT_MACHINE
該当項目のなかで、ファイルタイプ以外にDrive , Directory , Directory/Background , DesktopBackground がエクスプローラー用に存在している。
ShellExとShellを入れ替えれば、目的は達成される。
昔は、移動がとてもめんどくさかったが、今は、Powershellのコマンドでとても手軽になった。
例えば、VSCodeが「Drive」のメニューにすら出てるのをやめさせたい。
$from = 'HKLM:\SOFTWARE\Classes\Drive\shell\VSCode' $to = 'HKLM:\SOFTWARE\Classes\Drive\shellex\VSCode' Move-Item -LiteralPath $from -Destination $to
パーミッションエラー
更に最近は、レジストリをUACですら書き換えられない場合がある。
Ps はパーミッションエラーでもキーが存在しないメッセージを返すので、さらに面倒くさい。
Move-Item : Cannot delete a subkey tree because the subkey does not exist.
一つ上の階層を書き換える。
上位階層からサブ(下位)のパーミッションを上書きする。
例えば、HKLM\SOFTWARE\Classes\Drive\shell\Powershell
の所有者は、SYSTEMだが、SYSTEMにフルコントロールが存在しない。
TrustedInstaller にはフルコントロールが存在する。
TrustedInstallerになるのはちょっと面倒くさいので。
上位の所有者を書き換えて、サブコンテナも合わせて上書きする。
HKLM\SOFTWARE\Classes\Drive\shell\Powershell
の上位だから `HKLM\SOFTWARE\Classes\Drive\shell\
を上書きする。
もとの所有者がSYSTEMの場合に、SYSTEMを上書きするのは手間が多いので、とりあえず適当なユーザー(Adminなど)書き換えて、SYSTEMに戻す。戻すとき、連動してサブツリーの所有者が修正される。
パーミッションを開いて
所有者をAdminなどに書き換えて、
所有者をSYSTEMに戻す。
戻すときに、サブツリー(子孫コンテナ)も合わせて上書きされるので、フルコントロールが手中に返却される。
まとめて消す例
PowershellでまとめてShellExへ移動させる例
foreach( $path in "Drive", "Directory","Directory\Background" ){ foreach ( $name in "WSL", "PowerShell", "git_gui", "git_shell", "cmd" ) { $from = "HKLM:\SOFTWARE\Classes\$path\shell\$name" $to = "HKLM:\SOFTWARE\Classes\$path\shellex\$name" Move-Item -LiteralPath $from -Destination $to } }
パーミッションの書き換えも、そのうちにPowershellで作りたい。