エクスプローラーのコンテキストメニューに「新規作成」という項目があり、フォルダの何もないところで開くと、ここにいくつかのファイルを新規に作成するサブ項目が表示される。
この機能はWindowsには以前からあって、レジストリ設定で簡単にサブ項目を追加できた。しかし、Windows 11で新規作成にサブ項目を登録するには、単なる拡張子キーの登録だけではダメで、正しく関連付けされたプログラムと拡張子を登録し、そこにShellNewキーを配置する必要があるようだ。
このため、以前のように適当な拡張子を登録して、ShellNewで項目を「新規作成」に登録するという方法は使えない。しかし現時点では、表示されている項目を書き換えることはできる。そこで、今回は基本編として、すでに登録されているファイル形式やフォルダーの新規作成処理を書き換えることを考える。なお、確認にはWindows 11 Ver.22H2を用いている。
条件を満たした拡張子のみが新規作成に登録される
レジストリの「HKEY_CLASSES_ROOT」(以下HKCRとする)に登録されている拡張子のうち、ShellNewキーを持つものは、以下のコマンドで探すことができる。
reg.exe query HKCR /s /f ShellNew /k
レジストリのHKEY_CLASSES_ROOTを検索するとShellNewキーを持つ拡張子は少なくないが、すべてが新規作成に登録されているわけではなく、なんらかの条件があるようだ。また、ShellNewを持たないファイルでも新規作成に登録されているものがある
しかし、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側で指定する必要はない。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ













