エクスプローラーのコンテキストメニューに「新規作成」という項目があり、フォルダの何もないところで開くと、ここにいくつかのファイルを新規に作成するサブ項目が表示される。
この機能はWindowsには以前からあって、レジストリ設定で簡単にサブ項目を追加できた。しかし、Windows 11で新規作成にサブ項目を登録するには、単なる拡張子キーの登録だけではダメで、正しく関連付けされたプログラムと拡張子を登録し、そこにShellNewキーを配置する必要があるようだ。
このため、以前のように適当な拡張子を登録して、ShellNewで項目を「新規作成」に登録するという方法は使えない。しかし現時点では、表示されている項目を書き換えることはできる。そこで、今回は基本編として、すでに登録されているファイル形式やフォルダーの新規作成処理を書き換えることを考える。なお、確認にはWindows 11 Ver.22H2を用いている。
条件を満たした拡張子のみが新規作成に登録される
レジストリの「HKEY_CLASSES_ROOT」(以下HKCRとする)に登録されている拡張子のうち、ShellNewキーを持つものは、以下のコマンドで探すことができる。
reg.exe query HKCR /s /f ShellNew /k
しかし、Windows 11ではこのコマンドで列挙される拡張子の一部だけしかコンテキストメニューの「新規作成」に表示されない。msiファイルなどでインストールされたアプリケーションでは、拡張子登録のShellNewが有効になっているところを見ると、実行ファイルと関連付けが正しくされている場合のみにShellNewキーが有効になるようだ。
逆に、新規作成のサブ項目があるのに、HKCRの拡張子登録には、ShellNewがないもの(たとえばビットマップファイルなど)もある。これは、登録されたプログラムがコンテキストメニューなどにサブ項目を登録していると考えられる。
Windows 11の拡張子と実行ファイルの関連付けは、これまでの経緯から複数の方法があり、互換性のために、過去の方法でもファイルの拡張子から実行ファイルを見つけて起動することはできるが、おそらくは最新のProgIDを使う登録方法のもののみ、ShellNewが有効になるのだと考えられる。
なお、HKCRのDirectoryキーやDirectory\Backgroundキーにshellキーを作って、コンテキストメニューを登録しても、ShellNewとほぼ同等の処理が実現できる。これらは、エクスプローラーでフォルダアイコンやファイルウィンドウの何もないところでの右クリックに対応したコンテキストメニューを定義するものだ。これについては過去記事(「エクスプローラーの右クリックメニューをカスタマイズする」)を参照してほしい。
違いは、ShellNewを使う場合「新規作成」のサブ項目として登録され、デフォルトの新規ファイル名が提供されることである。また新規作成メニューは、Windows 11の簡略化されたコンテキストメニューに常に表示され、そのサブメニューから選択できる。
しかし、実行時のディレクトリパスは、Directory\Backgroundキーに定義したコンテキストメニュー項目でも得られ、「その他のオプションを確認」を選択して表示させる手間はあるものの、手数的には新規作成とほとんど違いがない。
ただ、Windows 11 Ver.22H2では、古い形式のコンテキストメニューを直接表示する方法だった「Shift+F10」や「Appキー」も、新しいコンテキストメニューを表示してしまうため、少し使いにくくなっている。
レジストリ設定と新規作成サブ項目
新規作成に登録されている拡張子で、ShellNewキーを持つ場合、そこに以下の表の名前/値ペアを設定できる。新規作成時の動作を決める基本的な名前/値ペアは、「NullFile」「FileName」「Command」「Data」「Directory」の5つ。まずは、このうちどれか1つを指定する。
「NullFile」は、中身のないサイズが0のファイルを作り、デフォルトの名前「新規<ファイルタイプ名>」を作る。これに対して「FileName」は、値で指定されたファイルをコピーして名前を「新規<ファイルタイプ名>」とする。
「Data」は、「新規<ファイルタイプ名>」を作り、その中身を値で指定されたバイナリ値にする。「Directory」は、「新しいフォルダー」を作る。これら4つの指定は、非常に簡易なもので、ほとんどカスタマイズの余地がない。特に、新規ファイル名を特定のパターンにしたいような場合には、「Command」を使って、新規ファイルを作成するコマンドを指定する。
「Command」は、値で指定されたコマンドを実行する。指定されたコマンドを直接実行するが、このとき、「%1」で作成されるファイルのフルパスが与えられる。
そのほかの項目は、おもにエクスプローラーで使うことを想定した名前/値ペアなので、あまり使い道がない。なお、新規作成のサブ項目の表示名やアイコンには、実行ファイル側の設定や拡張子の表示名などが使われるため、基本的にはShellNew側で指定する必要はない。
この連載の記事
-
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 -
第447回
PC
この秋登場のWindows 11の新バージョン、Ver.24H2の状況を見る -
第446回
PC
Windows 11のフォトアプリがUWPからWin32アプリになったことで今更わかるUWPの問題点 -
第445回
PC
次期Windows 11ではAndroidのファイルをエクスプローラーからアクセス可能になる -
第444回
PC
外部ファイルをExcelに読み込む際の作業を効率化するPower Queryの活用 -
第443回
PC
Windows Terminalで採用されたCascadia Codeフォントを使うとプログラムを書くとき断然見やすい -
第442回
PC
Copilot+ PCで実現されるローカル推論で「対クラウド企業」を指向するMicrosoft -
第441回
PC
WSL以前から40年以上続く、Windows(Microsoft)とUNIXとの関わり -
第440回
PC
そもそも「Copilot+ PC」とは何なのか? -
第439回
PC
今更more.comを使うのか!? Windowsでのページングを考える - この連載の一覧へ