Windows 10は、エクスプローラのフォルダーをシフトキーを押しながら右クリックすると、コンテキストメニューに「コマンドウィンドウをここで開く」が表示される。しかし、Windows 10 Creators Update を適用すると、「PowerShell ウィンドウをここに開く」というメニューに変わってしまう。なんとか、コンテキストメニューに「コマンドウィンドウをここで開く」を復活させてみた。
復活させる方法のみ読みたい方は、こちら。
PowerShell が標準になった
Windows 10 Creators Update から、従来のコマンドプロンプトに変わって、PowerShell を標準のコマンドラインインターフェースとして利用するようになった。たとえば、Windowsキー + X キーで表示されるメニューや、エクスプローラのフォルダーに表示されるコンテキストメニューには、 PowerShell が表示される。Windows Blogには、以下の記述がある。
PowerShell in the Shell: In an effort to bring the best command line experiences to the forefront for all power users, PowerShell is now the defacto command shell from File Explorer. It replaces Command Prompt (aka, “cmd.exe”) in the WIN + X menu, in File Explorer’s File menu, and in the context menu that appears when you shift-right-click the whitespace in File Explorer. Typing “cmd” (or “powershell”) in File Explorer’s address bar will remain a quick way to launch the command shell at that location.
しかし、コマンドプロンプト(cmd.exe)がなくなったわけではない。「ファイル名を指定して実行」から、「cmd」や「cmd.exe」と入力すれば起動できる。Windows の設定で[個人用設定]から[タスクバー]を選択して、PowerShell に置き換える設定をオフにすれば、Windowsキー + X キーで表示されるメニューは元に戻すことも出来る。
しかし、エクスプローラのコンテキストメニューは、元に戻すことが出来ないのだ。
レジストリを確認する
エクスプローラのフォルダーを右クリックしたときに表示されるコンテキストメニューは、「HKEY_CLASSES_ROOT\directory」に定義されている。レジストリの設定内容を確認してみると、cmd と Powershell の両方が定義されており、cmd には「HideBasedOnVelocityId」が、PowerShell には「ShowBasedOnVelocityId」が定義されていることが分かった。
「HideBasedOnVelocityId」を削除もしくは名称変更すれば良さそうだが、どちらの場合もエラーになる。残念ながら、「HKEY_CLASSES_ROOT\directory\shell\cmd」の定義は変更できないようだ。
アクセス許可を調べてみると、「TrustedInstaller」が所有しており、フルコントロールを与えられているのも「TrustedInstaller」のみだった。所有者になり、権限を変更する方法も考えられるが、Windows Updateで変更される可能性もあるので別の方法を探ってみた。
エクスプローラのコンテキストメニューを表示するためのキー
エクスプローラのコンテキストメニューを表示するためのキーは、「HKEY_CLASSES_ROOT\directory」だけでなく少なくとも3つある。
- HKEY_CLASSES_ROOT\directory
- HKEY_CLASSES_ROOT\Drive
- HKEY_CLASSES_ROOT\Folder
「HKEY_CLASSES_ROOT\Drive」はドライブを選択したときのコンテキストメニューだと分かるが、「HKEY_CLASSES_ROOT\directory」と「HKEY_CLASSES_ROOT\Folder」の違いが分からない。調べてみると、エクスプローラーの右クリックメニューをカスタマイズするという記事に、以下の記述があった。わかりやすいので、そのまま引用する。
フォルダ HKEY_CLASSES_ROOT\Folder コントロールパネルやネットワークなどの特殊フォルダを含む ディレクトリ HKEY_CLASSES_ROOT\directory ファイルフォルダ/ディレクトリ(特殊フォルダは含まない) ドライブ HKEY_CLASSES_ROOT\Drive ドライブはフォルダの1種になる
ドライブに追加しても仕方がないので、フォルダーを調べてみると cmd も PowerShell も定義されていないことが分かった。そこで、「HKEY_CLASSES_ROOT\Folder」に cmd の定義を追加することにした。
「コマンドウィンドウをここで開く」の復活
「HKEY_CLASSES_ROOT\Folder」に定義を追加すれば、「コマンドウィンドウをここで開く」を復活できた。以下の内容のファイルを Folder.reg として作成し、ダブルクリックして登録すれば、エクスプローラのコンテキストメニューに「コマンドウィンドウをここで開く」が表示される。コントロールパネルでも、「コマンドウィンドウをここで開く」が表示されてしまうが、実用上問題ない。
レジストリに登録した内容は、「HKEY_CLASSES_ROOT\directory」に定義されている cmd とほぼ同じだが、directory を Folder に変更し、「HideBasedOnVelocityId」を削除した。なお、「Extended」というキーが存在する場合は、シフトキーを押しながら右クリックしたときのコンテキストメニューに表示するようなる。「Extended」というキーを削除すれば、シフトキーを押さなくてもメニューに表示される。
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Folder\shell\cmd] @="@shell32.dll,-8506" "Extended"="" "NoWorkingDirectory"="" [HKEY_CLASSES_ROOT\Folder\shell\cmd\command] @="cmd.exe /s /k pushd \"%V\""
上記の定義を記述したファイルを、アップロードした。ダウンロード後、拡張子を reg に変更して実行すると「コマンドウィンドウをここで開く」を復活できる。