仮想マシン接続でWindows 11ゲストに送信したテキストから改行が消失? その意外な原因とは……その知識、ホントに正しい? Windowsにまつわる都市伝説(238)

Hyper-Vの仮想マシン接続において、Windows 11ゲストの基本セッションモードの場合にだけ発生する不可思議な現象を発見しました。恐らく“バグ”なのでしょうが、使いにくくて仕方がありません。

» 2023年07月26日 05時00分 公開
[山市良テクニカルライター]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windowsにまつわる都市伝説」のインデックス

Windowsにまつわる都市伝説

真夏の怪奇? Windows 11ゲストだけで再現する謎の改行消失現象

 筆者はHyper-V仮想マシンにさまざまなバージョンのWindowsやLinuxをインストールして、日々OSの機能やアプリの評価などを行っています。「Windows 11」が登場してからもう数年たちますが、Windows 11をHyper-V仮想マシンのゲストOSで使用するようになってすぐに、奇妙な現象に気が付きました。ある状況下で「Windows 11ゲストに送信したテキストから改行が消えてしまう」のです。

 Hyper-Vの仮想マシンのコンソールに接続する「仮想マシン接続(Vmconnect.exe)」には、「基本セッションモード」と「拡張セッションモード」の2つの接続モードがあります。

 基本セッションモードは、ゲストOSの状態や種類に関係なく「ローカルコンソール」(ビデオ出力)に接続するもので、OSのインストール時や起動直後からコンソールを操作でき、シャットダウンまたは停止するまでビデオ出力を表示し続けます。

 一方、拡張セッションモードは、リモートデスクトップ接続の技術を利用したもので、WindowsゲストはVMBus(仮想マシンバス)経由、LinuxゲストはHvソケット経由でリモートデスクトップセッションに接続します。

 拡張セッションモードでは、デバイスやドライブ、オーディオのリダイレクト、クリップボード共有、高解像度接続、画面のリサイズなど、リモートデスクトップ接続がサポートする多くの機能を利用できますが、基本セッションモードでもクリップボード経由でゲストOSにテキストを送信することができます。

 それには、ホスト側でクリップボードにテキストをコピーして、「仮想マシン接続」の「クリップボード」メニューから「クリップボードからテキストを入力」をクリックします。なお、「クリップボードからテキストを入力」には[Ctrl]+[V]のショートカットキーが示されていますが、基本セッションモードでこのショートカットキーの操作でテキストを送信する方法がよく分かりません(できるのかできないのか筆者は知りません)。

 Windows 11が登場してすぐのこと、評価用にWindows 11の仮想マシンを作成して、基本セッションモードの「クリップボードからテキストを入力」を実行したときに、Windows 11以外のゲストOSでは経験したことがない、奇妙なことに気が付きました。

 複数のテキストをゲストOSに送信したときに、「改行が完全に失われてしまう」のです。「メモ帳」(Notepad.exe)を開いて確認してみれば、誰でもすぐに再現できます。最初は複数行のPowerShellのコマンドラインを貼り付けたときに気が付きました。少し長いテキストだったので、改行が失われると修正するのも大変です(画面1)。

画面1 画面1 Windows 11を実行するHyper-V仮想マシンに基本セッションモードでクリップボードからテキストを送信すると、改行が全て消えてしまった

 「Windows 10」や「Windows Server 2022」、そしてもっと古いレガシーなバージョンのWindowsでは、これまで一度も経験したことのない挙動です(画面2)。

画面2 画面2 Windows 10では、同じ操作をしても改行が失われることはない

 拡張セッションモードではこのような現象は発生しませんし、基本セッションモードでも1行ずつ送信することにだけ気を付ければ問題を回避できます。別のアプリ(ブラウザの複数行テキストボックスへの入力、後述します)でも同様の問題が再現したことがあったので、当初はWindows 11ゲストと仮想マシン接続の基本セッションモードの組み合わせの問題だと、半ば諦めていました。

意外や意外、真犯人はストアアプリとして生まれ変わったあのアプリだった!

 日頃からこの現象には遭遇しないように気を付けていました。しかし、ある日のこと、この現象を失念していて、というか、クリップボードの中に改行を含むテキストがあることを失念して、PowerShellウィンドウに直接複数行のPowerShellのコマンドラインを貼り付けてしまいました。でも、あの現象は発生せず、コマンドラインは正常に機能したではありませんか。

 もしやと思い、別のアプリ(他のテキストエディタや「Microsoft Word」)に複数行のテキストを送信してみたところ、改行が消える現象は発生しませんでした。

 Windows 11以外のWindowsで発生したことがないということで、今更ながらピンときました。Windows 11では「メモ帳」アプリがそれまでの「デスクトップ(Win32)アプリケーション」ではなくなり、「ストアアプリ」(ユニバーサルWindowsプラットフォーム《UWP》アプリ)として生まれ変わりました。つまり、改行が消失するのは、Windows 11ゲストの問題ではなく、“新しいメモ帳アプリ”(と基本セッションモードの組み合わせ)で発生する問題だったのです。

画面3 画面3 新しいメモ帳以外のアプリでは、送信したテキストから改行が消失することはなかった

 もしかすると、新しいメモ帳以外にも、同様の現象が発生するアプリがあるかもしれません。先ほど、Windows 11の別アプリ事例として、ブラウザで複数行のテキストボックスへの複数行テキスト送信を挙げました。あらためて確認してみたところ、Windows 10ゲストの基本セッションモードでも改行が失われる現象が発生しました(画面4)。

画面4 画面4 Windows 10ゲストでもMicrosoft Edgeで複数行のテキストボックスに複数行のテキストを送信した場合、基本セッションモードでは改行が失われた。画面左が基本セッションモード、右は拡張セッションモード

 「Microsoft Edge」「Google Chrome」「Mozilla Firefox」で確認しましたが、いずれも基本セッションモードでは改行が失われ、拡張セッションモードでは改行は失われませんでした。改行が失われる現象は、ブラウザに関してはWindows 11登場以前から発生していたようです。

 改行を含む長いテキストを送信することがない限り、改行消失問題で苦労することはないと思います。ですが、特定の条件下で改行が消えてしまうということを知っておくと、その現象に遭遇したときに素早く対処できるでしょう。

 ちなみに、基本セッションモードの「クリップボードからテキストを入力」で送信できるテキストの最大長が気になったので、テキストの長さを変えながら調べてみました。その結果、改行文字を含む最大2047字までが限度でした。それ以上の長さになると「仮想マシンにキーを送信できませんでした。テキストを入力できません。テキスト内の文字が多すぎます」としてはじかれます。

 なお、テキストの長さのチェックはゲストOSに送信する前に行われるため、Windows 11の新しいメモ帳に送信する場合でも、消えてしまう改行は1文字としてカウントされます(送信前なのでまだ消えていません)。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP 2008 to 2023(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。