雑記帳

整理しない情報集

更新情報

Windows 11の右クリックメニュー事情

公開日:

カテゴリ: Windows

Windows 11ではエクスプローラの右クリックメニューが一新されたので、どのようにしてカスタマイズ(整理)できるか調べてみました。

ご注意

本記事では、手動でレジストリの操作を行うため、誤った操作にはくれぐれもご注意ください。

アプリによるメニュー項目

Windows 11の新しい右クリックメニューの中で「プロパティ」より下、「その他のオプションを確認」より上の項目群です。ここには主に手動でインストールしたアプリのメニューが追加されます。

新しい右クリックメニューの項目はすべてCLSID(GUID)を持ったシェル拡張で、DLLを呼び出してメニューを作成するタイプのものです。従来の右クリックメニューでも一部では使用されていましたが、新しい右クリックメニューに表示するには、加えてMSIXパッケージとしてインストールする必要があるようです。

ちなみに

MSIXやMSIXバンドル以外のインストーラを使うアプリの場合、あらかじめインストーラ内に格納しておいたMSIXパッケージをインストール時に実行して、別途インストールしているようです。

この際のMSIXパッケージにはアプリ本体は入れておらず、マニフェスト・アイコン・署名のみが入っているようです(Sparse Package)。

インストールしたアプリのCLSIDを確認するには、以下のレジストリキーを調べます。

# 全ユーザ(特権必要)
HKLM\SOFTWARE\Classes\PackagedCom
# 現在のユーザ(特権不要)
HKCU\SOFTWARE\Classes\PackagedCom

このキー内のPackageキーにはアプリパッケージごと、ClassIndexキーにはCLSIDが羅列されているので、お好みの方から対象のCLSIDを割り出します。Packageキーはアプリパッケージ名\ClassにCLSIDのキーがあります。ClassIndexキーは、全アプリのCLSIDのキー内にアプリパッケージ名のキーがあります。

あとはこのCLSIDをシェル拡張からブロックすれば右クリックメニューから削除できます。変更はリアルタイムに反映されます(エクスプローラの再起動は必要ありません)。

シェル拡張のブロックは、以下のキー(無ければ作成する)にCLSIDの名前の文字列値を登録することでできます(値は何でも(空でも)OKです)。CLSIDの前後についている中括弧ごと使用します({}は外してはいけません)。

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked

※HKCUキーに追加してもブロックできるかは確認していません

Windows標準のメニュー項目

Windows標準のメニュー項目は上記のような制約は特に無いようで、従来の右クリックメニューの整理と同じ方法で制御できます。

Shellを使用するもの

全称、拡張子、ファイル種別、ファイルグループ、フォルダ種類、関連付けられたアプリのそれぞれのキーを開き、Shellキー内の該当項目キーにProgrammaticAccessOnlyの空の文字列値を追加します。

# 全称
HKCU\SOFTWARE\Classes\*
HKLM\SOFTWARE\Classes\*
# 拡張子ごと
HKCU\SOFTWARE\Classes\.拡張子
HKLM\SOFTWARE\Classes\.拡張子
HKLM\SOFTWARE\Classes\SystemFileAssociations\.拡張子
# ファイル種別ごと
HKCU\SOFTWARE\Classes\ファイル種類(大抵の場合は拡張子+"file")
HKLM\SOFTWARE\Classes\ファイル種類(大抵の場合は拡張子+"file")
# ファイルグループごと(audio/document/image/text/video)
HKLM\SOFTWARE\Classes\SystemFileAssociations\グループ名
# フォルダ種類ごと(audio/image/video)
HKLM\SOFTWARE\Classes\SystemFileAssociations\Directory.フォルダ種類
# 関連付けられたアプリごと(キー名の構成はアプリによって異なる)
HKCU\SOFTWARE\Classes\アプリの識別子.ファイル種類
HKLM\SOFTWARE\Classes\アプリの識別子.ファイル種類

CLSIDを使用するもの

2通りの方法があります。

ShellExから削除

「Shellを使用するもの」と同様に、全称、拡張子、ファイル種別、ファイルグループ、フォルダ種類、関連付けられたアプリのそれぞれのキーを開き、shellex\ContextMenuHandlersキー内の該当キーを削除します。

Shellキーと異なりProgrammaticAccessOnlyは効かないので、この方法ではキーを削除するほかありません。実行前の状態に戻せるようにバックアップを取っておきましょう。

CLSIDをまとめてブロック

アプリによるメニュー項目の削除と同様、以下のキー(無ければ作成する)にCLSIDの名前の文字列値を登録することでできます(値は何でも(空でも)OKです)。CLSIDの前後についている中括弧ごと使用します({}は外してはいけません)。

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked

アプリによるメニュー項目と異なり、変更後はエクスプローラの再起動が必要です。なお一部の項目はブロックすると新しい右クリックメニュー自体が表示されなくなることがあるのでご注意ください。

CLSIDを自力で探すのは骨ですが、以下いずれかの方法でおおよそ割り出せそうです。

方法1: CommandStoreを探す

様々な拡張子やファイル種別で使うコマンドは、CommandStoreに登録されている場合があります。以下のキーから該当の項目を探します。

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

該当項目のキー内のExplorerCommandHandlerもしくはCommandStateHandlerがCLSIDです。正確にはCommandStateHandlerは状態チェック用のCLSIDのようですが。

方法2: CLSIDキーを検索する

以下のキー内にあるContextMenuOptInを検索します。

HKLM\Software\Classes\CLSID

このContextMenuOptInが含まれているキーがCLSIDです。キーの既定の値を見ると、おおよそどのような項目かが見えてきます。項目によってはキー内にImplementsVerbsが含まれていることがあり、この値は方法1のCommandStoreのキーに対応するようです。

おわり

Windows 11の新しい右クリックメニューはだいぶ整理されてスッキリしましたが、それでもいらない項目からの呪縛からは解き放たれそうにないですね。あとはエクスプローラ共々軽くなってもらえれば。。。

カテゴリ: Windows