このページの本文へ

前へ 1 2 次へ

Windows Info 第214回

機能的にはほぼ完成されたWindows 10の新コンソール、Windows Terminal v0.9

2020年03月08日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

エクスプローラーに
「ここでWindows Terminalを起動」を登録してみる

 Windows Terminalは、UWPアプリケーションだが、「アプリ実行エイリアス」という機能でwt.exeという起動コマンドファイルを持つ。wt.exeは、ユーザーフォルダーの下となる

%userprofile%¥AppData¥Local¥Microsoft¥WindowsApps¥wt.exe

にあるが、サイズゼロで実体はここにはない。

 Windowsは、UWPをスタートメニューやタスクバーなどから起動することができるが、アプリ実行エイリアスは、アプリ自身が登録した実行ファイル名を使う。URLによる起動と似たところがあるが、従来のWin32アプリをUWP置き換えたとき、従来通りの方法で起動するための方法だ。ただし、このアプリ実行エイリアスは開発時に組み込む機能であり、どのUWPアプリでも利用できるというわけではない。また、開発者が任意に名前を付けるものであるため、場合によっては、他のアプリと衝突する可能性もある。このため、「設定」→「アプリ」→「アプリ実行エイリアス」でアプリごとにオンオフすることが可能だ。

 ユーザープロファイル以下にあるということは、ユーザーごとに起動パスが異なるということを意味する。このため、レジストリに登録するときにはちょっと面倒になる。というのは、レジストリ値の文字列型(REG_SZ)は、%userprofile%といった環境変数を自動では展開してくれないからだ。このときには、展開可能文字列型(REG_EXPAND_SZ)を使う必要がある。

 エクスプローラーの右クリックメニューへの登録は、レジストリキーの既定値(名前がなくキー作成時に自動的に作られるレジストリ値)で行う必要があるのだが、レジストリエディターは、既定値を文字列型でしか作成できない。このため、レジストリの登録をregコマンドを使ってコマンドラインからする必要がある。

 もちろん簡易な方法として、どうせ自分しか使わないのだから、wt.exeのフルパスを指定してしまうという方法もある。この方法でよければ、レジストリエディタを使って、通常のエクスプローラー右クリックメニューの登録のように

HKEY_CLASSES_ROOT¥Directory¥Background¥shell¥

にWindows Terminal用のキーを適当に作り、その下にcommandキーを置いて既定値でコマンドラインを指定してやればよい。

 たとえば、Windows Terminal用にWTキーを作ったら以下のようなレジストリ登録をすればよい。ただ、ちょっと「負けた」感がある。

キー:HKEY_CLASSES_ROOT¥Directory¥Background¥shell¥WT¥command 名前:既定値
種類:文字列値
データ:C:¥USERS¥自分のユーザー名¥AppData¥Local¥Microsoft¥WindowsApps¥wt.exe new-tab -p "cmd" -d "%V."

 もし、データの部分を「%userprofile%¥AppData¥Local¥Microsoft¥WindowsApps¥wt.exe new-tab -p "cmd" -d "%V." 」と汎用的に指定したいなら、以下のコマンドラインを使ってregコマンドから登録する。

reg add HKCR¥Directory¥Background¥shell¥WT3¥command /ve /t REG_EXPAND_SZ /d ^"%^userprofile^%¥AppData¥Local¥Microsoft¥WindowsApps¥wt.exe new-tab -p ¥"cmd¥" -d ¥"%V.¥"^"

 かなり「おまじない」っぽいが、コマンドラインからだと%userprofile%が解釈され変換されてしまうため、このように^と¥でエスケープする必要があるからだ。コマンドラインでの解釈で、^によるエスケープが消える。%の部分にも^があるため、コマンドラインは%userprofile%を解釈せず、^だけを除去する。これをregコマンドが受け取るが、これをWindowsのAPIを介してレジストリに登録するとき、Windowsが-dオプション以下で¥のエスケープを処理する。

 おそらく疑問に思うのは、"%V."のピリオドだろう。%Vは、エクスプローラーがこのレジストリ値を使ってコマンドを起動するときにカレントディレクトリに置き換えるもの。ダブルクオートでくくってあるのはスペースなどを含むパスが渡される可能性があるからだ。

 しかし、何も付けない"%V"のままだとcmd.exeがエラーになる。%Vで渡されるフォルダ名の最後に¥があり、これがCMD.EXEに渡るときに後ろのダブルクオートを喰ってしまい、ダブルクオートが閉じていない状態となりエラーになると推測している。"."を付けることで意味を変えずに末尾を¥以外にできる(パス指定でのピリオドは現在のディレクトリを表す)。

 Windows Terminalは、今年4月の完成を目標としており、機能の実装という点ではかなり最終版に近くなってきた。コマンドラインが実装されたことで、スタートメニューやタスクバーへの登録も便利になり、たとえば、CMDとPowerShellあるいはBashを使い分けるのも簡単になった。wt.exeに対するショートカットを作り、引数にプロファイルを指定することでさまざまなシェルを起動できるようになる。

 たとえば、Visual Studioには、コマンドラインを使った開発用の環境設定をするバッチファイルが付属する。これを起動しないと、開発ツールへのパスや環境変数による設定が行われない。Visual Studioに付属のバッチファイルでは、conhost.exeによる従来のコンソールウィンドウが起動してしまうが、wt.exeへのショートカットを使えば、Windows Terminal内でこれを起動し、コンソールベースのエディタなども同時に起動しておける。コマンドラインを使うユーザーには、「朗報」といえるだろう。

 なお、冒頭で紹介したようにWindows Terminalはまだプレビュー版の段階にある。このため、仕様どおりでないことや挙動に不安定な部分もある。これらを意識し、ご利用はご自身のリスクでお願いしたい。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン