2023年6月16日金曜日

マルチタスクを快適に!真の新しいプロセスでウィンドウを開くシェルメニューを追加する

真の別プロセスでフォルダーを開く機能を右クリックメニューへ追加して手軽に使えるようにします。

🌟 君は本当の "新しいプロセスでフォルダーを開く" を知っているか?

Windows の標準仕様より実用的でしょう。

Windows シェルメニュー

Explorer.exe の仕様に不明な点が多く、思いのほか手こずりましたが、おかげで新しい発見もあり面白い内容になりました。

真の別プロセスでフォルダーを開く機能をシェルメニューへ追加する方法

  1. レジストリ エディターを開きます。

    ファイル名を指定して実行。WIN+R

    regedit

    ファイル名を指定して実行 regedit

  2. レジストリキーを作成します。

    HKCU\SOFTWARE\Classes\Folder\shell\openseparateprocess\command

    openseparateprocess は任意の名前です。

  3. command キーの (既定)explorer.exe %1 にします。

    1. openseparateprocess キーへ戻ります。

    2. MUIVerb (文字列値)を作成。値のデータを @shell32.dll,-37413 にします。

  4. これでフォルダーを「の別プロセスで開く」シェルメニューが追加されました。フォルダーを右クリックし、新しいプロセスで新しいウィンドウを開く(P)を選択してください。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\Folder\shell\openseparateprocess]
"MUIVerb"="@shell32.dll,-37413"

[HKEY_CURRENT_USER\SOFTWARE\Classes\Folder\shell\openseparateprocess\command]
@="explorer.exe %1"

Explorer.exe のコマンドラインオプション

command キーに設定した explorer.exe %1 はシンプルながら、間違いなく完全な新しいプロセスで起動します。

この単純なコマンド発見までに長い道のりを経ました。

Explorer.exe のオプションはいくつかありますが、すでに公式のドキュメントは存在せず、Windows のバージョンにより挙動が異なっていたり動作しないこともあります。

また、スイッチをコンマで区切るなど書式も特殊。今の Windows にこのような書き方は見られません。

explorer.exe [/n] [,/e] [,/root,{object}] [[,/select],{sub-object}]

/sepalate は隠しオプション。

コマンド発見までに検証した過程を紹介します。

分かっている情報からあたりをつける

Windows10 にて動作確認
/n 動作しない
/e 動作しない
/root,[path] 動作しない
/select,[path] 動作する
/sepalate 動作する

幸い Explorer.exe /separate の動作は確認できるので課題は解決済み。他の効果的なコマンドを検証します。

レジストリを検索するといくつかのパターンのコマンドが見えます。

  • %SystemRoot%\Explorer.exe

  • %SystemRoot%\Explorer.exe /idlist,%I,%L

  • %SystemRoot%\Explorer.exe /separate,/idlist,%I,%L

  • %SystemRoot%\explorer.exe /factory,{5BD95610-9434-43C2-886C-57852CC8A120}

  • %SystemRoot%\explorer.exe /factory,{682159d9-c321-47ca-b3f1-30e36b2ec8b9}

  • %SystemRoot%\explorer.exe /factory,{75dff2b7-6936-4c06-a8bb-676a7b00b24b}

  • %SystemRoot%\explorer.exe /factory,{ceff45ee-c862-41de-aee2-a022c81eda92}

/idlist/factory スイッチの効果は不明。また、パスが通っている explorer.exe のすべてに環境変数のフルパスが記述してあるのも不思議。変数名の%I,%Lも見ない名前です。

分からないことだらけなので総当たりで検証することにして、もっとも短い explorer.exe %1 から試してみたところ、すぐに完全に別のプロセスで開くのを確認できました。最後の %1 がないと通常の開く動作になるのは発見事項。

つまり、前回の Explorer /separate/separate は必要なかったということになります。(ただし、Explorer 単独で起動する場合に必要なので間違いではない)

なぜこうなるかは曖昧だが、望んだ効果を得られる結果オーライの Windows カスタマイズでした。