やたら散らかるわりにレジストリからでしか編集はできず、何なら設定場所すらも散らかっており最高。
え?散らかってない?あっそうだコンテキストメニューを混沌に戻してる前提の話だよ。
Windows11 24H2時点での情報。殆ど即時反映される……はず。
なおデカめのWindowsUpdateが入ると元に戻ってしまう項目があるっぽい。
目次
基本知識
まずコンテキストメニュー関連のレジストリ一覧。
HKEY_CLASSES_ROOT\* | ファイル ※拡張子キーに登録のないもの |
HKEY_CLASSES_ROOT\.拡張子 | 特定の拡張子のファイル |
HKEY_CLASSES_ROOT\exefile | .exeファイル |
HKEY_CLASSES_ROOT\Directory | フォルダ ※コンパネやネットワーク等の特殊フォルダを含まない |
HKEY_CLASSES_ROOT\Directory\Background | フォルダ内の何もないところ ※explorer.exe内のみ |
HKEY_CLASSES_ROOT\Folder | フォルダ ※特殊フォルダを含む |
HKEY_CLASSES_ROOT\AllFilesystemObjects | ファイルとフォルダ全て ※優先度低 |
HKEY_CLASSES_ROOT\DesktopBackground | デスクトップの何もないところ |
HKEY_CLASSES_ROOT\Drive | ドライブ |
HKEY_CLASSES_ROOT\Network | ネットワークの共有名のところ |
HKEY_CLASSES_ROOT\NetServer | ネットワークのサーバーアイコン |
基本的には各パス以下の \shell\ または \shellex\ContextMenuHandlers\ に対象のキーがある。
そこにキーを追加すれば任意の項目を追加できるが、大抵の場合は項目を消したくて調べていると思う。別途入れたソフトは大抵 AllFilesystemObjects\shellex\ContextMenuHandlers\ とかにキーが生えていて、そのキーを削除すれば消えるはず。
一方でWindowsに最初からあるいくつかの項目は妙に厄介だったりするのでいくつかピックアップする。
項目の削除
~で編集 / OneDrive に移動(M)
いきなりだがこいつらは方法が異なり、 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\ 以下に Blocked キーを作成してそこに文字列値を作成すると消える。またこれらは再起動しないと反映されない。
なおHKLMではなくHKCUに作るとユーザー単位で消せる。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked
or
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked
---
ペイントで編集
{2430F218-B743-4FD6-97BF-5C76541B4AE9}
メモ帳で編集
{CA6CC9F1-867A-481E-951E-A28C5E4F01EA}
フォトで編集
{BFE0E2A4-C70C-4AD7-AC3D-10D1ECEBB5B4}
OneDrive に移動(M)
{1FA0E654-C9F2-4A1F-9800-B9A75D744B00}
それぞれの文字列値に関してデータは空欄でOK。
OneDriveの値を {CB3D0F55-BC2C-4C1A-85ED-23ED75B5106B} とする記事があるが、恐らくその情報は古い。
アクセスを許可する(G)
ファイルに対して
HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Sharing
フォルダに対して
HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\Sharing
フォルダの何もないところに対して
HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\Sharing
ドライブに対して
HKEY_CLASSES_ROOT\Drive\ShellEx\ContextMenuHandlers\Sharing
(既定)値のデータを無効化する。データの先頭に?を追加するなどすれば無効化できる。
お気に入りに追加(F)
ファイルに対して
HKEY_CLASSES_ROOT\*\shell\pintohomefile
---
文字列値
ProgrammaticAccessOnly
文字列値 ProgrammaticAccessOnly を追加する。データは空欄でOK。
この値はGUIからの操作のみ無効にし、プログラム経由でのみ利用可能にするもの。
以前のバージョンの復元(V)
ファイルとフォルダに対して
HKEY_CLASSES_ROOT\AllFilesystemObjects
ドライブに対して
HKEY_CLASSES_ROOT\Drive
---
文字列値
NoPreviousVersions
文字列値 NoPreviousVersions を追加する。これもデータは空欄でOK。もちろん項目を消してるだけで機能自体は残っているのでWindowsの復元等は問題なく動く。
プロパティからも「以前のバージョン」タブが消えるが、このメニューを消そうとしてるってことはシャドウコピー使ってないだろうし問題ないね?
共有(S)
ファイルに対して
HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\ModernSharing
アクセスを許可する(G) と同様に、(既定)値のデータを無効化する。
送る(N)
ファイルに対して
HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\SendTo
同様に、(既定)値のデータを無効化する。
ライブラリに追加(I)
フォルダに対して
HKEY_CLASSES_ROOT\Folder\ShellEx\ContextMenuHandlers\Library Location
同様に、(既定)値のデータを無効化する。
Adobe Acrobat
Windows組み込みの項目ではないが
ファイルに対して
HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Adobe.Acrobat.ContextMenu
フォルダに対して
HKEY_CLASSES_ROOT\Folder\ShellEx\ContextMenuHandlers\Adobe.Acrobat.ContextMenu
同様に、(既定)値のデータを無効化する。
これだけ消せば結構すっきりした感じになったんじゃないだろうか。