Windows Terminal強制使用を制御する~ForceV2設定ガイド~

Windows Terminal強制使用を制御する~ForceV2設定ガイド~
Photo by Athul Cyriac Ajay / Unsplash

こんにちは!

最近のWindows 10/11では、従来のコマンドプロンプトの代わりにWindows Terminalが自動的に起動するようになっています。この動作を制御するのが「ForceV2」という設定です。この記事では、ForceV2の詳細と設定方法について解説します。

【ご注意】本稿ではレジストリ操作について扱っています。レジストリの変更は慎重に行う必要があり、誤った操作によってシステムに影響が出る可能性もございます。操作の前にはシステムのバックアップをお取りいただくことをお勧めいたします。 記事の内容は一般的な情報提供を目的としており、お客様の環境によっては動作が異なる場合もございます。操作の実行はご自身の判断と責任のもとでお願いいたします。

ForceV2とは?

ForceV2は、Windowsのレジストリで管理される設定値で、コマンドプロンプトの動作を制御することができます

  • 値が1(デフォルト):新しいWindows Terminalが強制的に使用されます
  • 値が0:従来のコマンドプロンプト(conhost.exe)が使用されます

この設定は以下のレジストリパスに存在します

HKEY_CURRENT_USER\Console

なぜForceV2を変更する必要があるのか?

Windows Terminalは多くの優れた機能を持っていますが、以下のような場合に従来のコマンドプロンプトが必要になることがあります:

  1. 特定のレガシーアプリケーションとの互換性問題
  2. カスタムコンソールアプリケーションのデバッグ
  3. 特定のコンソール機能が新しいターミナルで正しく動作しない場合

⚠️ご注意! WSLを使ってるとこれまでのバッチファイルが動作しなくなる場合があります(解決策あり)

ForceV2を0に設定(従来のコンソールを使用)すると、WSL使用時に問題が発生します:

発生する問題

WSLをバッチファイルから起動しようとすると、以下のエラーが表示されます:

サポートされていないコンソール設定です。この機能を使用するには、従来のコンソールを無効にする必要があります。

エラー コード: Wsl/Service/WSL_E_CONSOLE

なぜ問題が起きるのか

  • WSLは新しいWindows Terminal/ConPTYの機能に依存しています
  • 特に以下の機能が必要です
    • 改善されたUnicode対応
    • 今風の端末エミュレーション
    • WSL用の特別なコンソール機能

解決方法

  1. 推奨方法: ForceV2を1に設定する
reg add "HKEY_CURRENT_USER\Console" /v ForceV2 /t REG_DWORD /d 1 /f
  1. 代替方法: Windows Terminal直接からWSLを起動すれば、問題ありません(が、これだとバッチ化したいWSLユーザー的には意味が無いですね)

WSL利用時の推奨設定

WSLを使用する環境では、基本的にForceV2は1(有効)にしておくことを推奨します。これにより

  • WSLが正常に動作
  • 最新のターミナル機能が利用可能
  • Unicode文字の表示が改善
  • より良い開発体験が得られる

設定方法

方法1:バッチファイル(最も簡単)

以下の内容でバッチファイル(.bat)を作成します。

従来のコマンドプロンプトを使用する場合(ForceV2を無効化)

reg add "HKEY_CURRENT_USER\Console" /v ForceV2 /t REG_DWORD /d 0 /f

Windows Terminalを使用する場合(ForceV2を有効化)

reg add "HKEY_CURRENT_USER\Console" /v ForceV2 /t REG_DWORD /d 1 /f

方法2:C#プログラムで設定

より柔軟な制御が必要な場合は、C#でやってもいよいでしょう

using (RegistryKey key = Registry.CurrentUser.CreateSubKey(@"Console"))
{
    // ForceV2を無効化(0)または有効化(1)
    key.SetValue("ForceV2", 0, RegistryValueKind.DWord);
}

方法3:レジストリエディタで手動設定

  1. Windowsキー + R を押して「regedit」と入力
  2. HKEY_CURRENT_USER\Console に移動
  3. 右クリックで新規 → DWORD (32ビット) 値
  4. 名前を「ForceV2」に設定
  5. 値を0または1に設定

設定の確認方法

設定が正しく適用されているか確認するには

  1. 設定変更後、すべてのコマンドプロンプトを一度閉じる
  2. 新しくコマンドプロンプトを開く
  3. ウィンドウのタイトルバーとデザインで判断可能

注意事項

  • この設定はユーザーごとの設定です(HKEY_CURRENT_USER)
  • 管理者権限は「不要」
  • 設定変更後は新しく開くコマンドプロンプトから適用されます
  • すでに開いているウィンドウには影響しません

まとめ

ForceV2設定は、Windowsのコンソール環境をカスタマイズする重要な機能ですが、WSLユーザーはこの設定を1(有効)にしておくのが無難です。

開発やデバッグの際には、必要に応じて従来のコマンドプロンプトと新しいWindows Terminalを適切に切り替えることで、より効率的な作業が可能になりそうです

Read more

Luckfox Pico Mを外出先から使う。3,750円・64MBのLinuxボードにWireCanalで公開URLをつけるまで

Luckfox Pico Mを外出先から使う。3,750円・64MBのLinuxボードにWireCanalで公開URLをつけるまで

秋葉原で買った3,750円のLinuxボード Luckfox Pico M(RV1103・64MB・USB-Cのみ)を、Web公開用の受信ポートを追加せずにインターネット側から使えるようにするまで。SDカード書き込み、RNDIS経由のネットワーク、WireCanal無料プランでの公開、busybox initでの常駐とブラウザからのLED操作、再起動復帰(33秒)まで実測手順で解説します。

By Qualiteg プロダクト開発部
Raspberry Pi 5のWebサーバーをインターネットに公開する。ポートは開けない、WireCanalのトンネルで

Raspberry Pi 5のWebサーバーをインターネットに公開する。ポートは開けない、WireCanalのトンネルで

受信ポートを閉じたまま、Raspberry Pi 5のWebサーバーをインターネットに公開します。WireCanalのAgentをワンライナーで入れ、canalを作り、systemdで常駐化。ポート開放もルーター設定も不要で、操作はおよそ5分。再起動後の自動復活まで実測で検収しました。

By Qualiteg プロダクト開発部
Raspberry Pi 5を堅牢化する。SSH鍵認証・UFW・fail2banと、再起動でIPv6が復活する罠

Raspberry Pi 5を堅牢化する。SSH鍵認証・UFW・fail2banと、再起動でIPv6が復活する罠

セットアップ直後のRaspberry Pi 5は、パスワード認証が有効なまま、ファイアウォールなし、更新可能なパッケージ172件と無防備です。SSHの鍵認証化・UFW・fail2ban・自動更新・IPv6無効化を実コマンドと実測検収で解説します。sysctlのIPv6無効化が再起動で復活する現象と恒久対策も実機で確認しました。

By Qualiteg プロダクト開発部