エクスプローラーのコンテキストメニューに「新規作成」という項目があり、フォルダの何もないところで開くと、ここにいくつかのファイルを新規に作成するサブ項目が表示される。
この機能は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側で指定する必要はない。
この連載の記事
-
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る - この連載の一覧へ