この記事のWVDは”Windows Virtual Desktop Spring 2020 Release”が対象です。
Windows Virtual Desktop では エンドユーザに2種類の仮想デスクトップ環境を提供可能です。 1つはWindows クライアントのフル機能を提供する”Desktop”です。 2つ目はアプリケーションをそのウィンドウに限定して提供する”RemoteApp”です。 今回の記事では”RemoteApp” と”Desktop” をエンドユーザ視点で違いを紹介していきます。
とは言いつつ途中で問題が多々発生し、そのトラブルシューティングの話が半分を占めます。
テスト環境の構成は以下の通りです。Windows Virtual Desktop 上の仮想のWindows 10 Enterprise vesion 2004 の Multi-Session イメージを利用し、RemoteApp と Desktop の2つの画面転送方式を紹介していきます。
目次
1. RemoteApp の利用イメージ
まずは手元の物理PCでリモートデスクトップクライアントを起動します。
リモートデスクトップクライアントが起動します。
私の環境には3つのWorkspace がありますが、真ん中の”Windows 10 2004 Workspace” がゲストOSにWindows 10 Enterprise 2004 を利用した環境です。今回はこちらを紹介していきます。
以下のアイコンは”Desktop” のアプリケーショングループです。
“RemoteApp” は以下のようにアプリケーションがアイコンで表示されます。
さっそく起動していきます。 まずは”System Information”です。
アイコンをクリックします。 “アプリの開始中” と接続を開始します。
資格情報を入力します。
接続中の画面です。
Windows Virtual Desktop で提供される仮想のWindows 10 で起動した”システム情報”のウィンドウがローカルPCに表示されます。 グレーの背景がローカルPCです。
拡大します。 OSは”Windows 10 Enterprise for Virtual Desktops”であることがわかります。ビルドは19041 です。
サービスを確認します。 Windows Virtual Desktop 特有のサービス群が存在することを確認できます。
以下はローカルPCでも”システム情報”を起動しています(左側)。
ローカルPCのOSは”Windows 10 Enterprise”です。ビルドも18363 とWindows Virtual Desktop 側の19041 と異なります。
次は”Resource Monitor” を起動します。
先ほど認証しているので今回は認証は問われずにアプリケーションが起動します。グレーの背景がローカルPCですが ”パフォーマンス モニター” のウィンドウが RemoteApp としてWindows Virtual Desktop から画面転送されてきています。
次はExcel です。
普通に使えます。
次にWeb ブラウザをテストするつもりでしたが アプリケーションの登録を忘れていました。 登録からやります。
2. RemoteApp のアプリケーション登録
RemoteApp の管理はすべて Azure Portal から実行可能です。
アプリケーショングループの管理画面に移動します。 管理 > アプリケーション から”追加” を実行します。
アプリケーションの追加を行う画面が表示されます。
“Microsoft Edge” を追加します。 Windows Virtual Desktop の仮想のWindows 10 の実際のスタートメニューの情報を読み取り、ここで選択することが可能です。
あとのパラメータは基本的に変更不要です。 表示名などは利用環境に応じて変更することはあるかもしれません。
追加されました。 とても簡単です。
スタートメニューにないアプリケーションを指定することも可能です。
以下はコマンドプロンプトを追加します。 ソースのリストボックスで”ファイルパス”を選択します。 そしてパスに絶対パスでプログラムを指定します。 アイコンはパスと同じものを指定すればOKです。
ただ今回はわざとアイコンを変えてみましょう。アイコンのパスに”c:\windows\System32\imageres.dll” 、アイコンのインデックスに”0″ を指定します。
“CMD2″が追加されました。
リモートデスクトップクライアントではフィードを更新しない限り、Azure Portal での変更は反映されません。
“最新の情報に更新” を実行します。
追加した “Microsoft Edge” と”CMD2″ が表示されます。
コマンドプロンプトは左側が既定のアイコン、右側が意図的に変更したアイコンです。
3. RemoteApp からのブラウザ利用
RemoteApp の”Microsoft Edge”を起動します。
と思ったらエラーで起動しません。 エラーコードは 0x0 と有用な情報とならないコードのようです。
トラブルシューティングとして先ほど起動できていた”Excel” を起動します。 問題なく起動します。
先ほど登録した”Microsoft Edge”が起動しないことは切り分け出来ました。 一度、”Microsoft Edge”のRemoteAppを削除し、再登録し、フィードを更新した上で起動します。 しかし、問題は再現します。
“Internet Explorer” を追加し、テストします。
結果は同じです。 “Microsoft Edge” 固有の問題ではなさそうです。
このあと、正常に動作していたExcel や System Information を削除し、再登録します。 結果、正常に動作していたExcel や System Information も同じエラーで起動しない状態となりました。 また、リモートデスクトップクライアントで登録を解除し、再登録しても同じ状況です。
この状態でも最初に登録していたCMD は正常に動作します。 つまり、Edge を追加したタイミング以降に登録したRemoteApp が正常動作しないと。
次に、登録されていたRemoteAppをすべて削除し、そのあとMicrosoft Edge のみ追加し、再度起動を試みます。
Edge が起動しました。 原因は不明ですが正常動作するRemoteAppと動作しないRemoteApp が混在する状況からすべて削除し再登録という乱暴な方法により解消することが出来ました。 まあ、Windows Virtual Desktop はプレビューですし無償のサービスなのでこんなものでしょう。
Edge から APNIC のサイトにアクセスし、送信元のIPアドレスを確認します。 “20.48.2.191” が送信元のIPアドレスです。そしてIPアドレスをクリックします。
Microsoft が管理するIPアドレスであることを確認出来ます。
途中、おもわぬトラブルが発生しましたが Web ブラウザのRemoteApp まえ紹介することが出来ました。 一番、単純なネットワーク分離/インターネット分離を実現出来たとも言えます。(しかし、トラブルはまだ続きます)
4. Desktop の利用イメージ
次はWindows 10 のフル機能を利用出来る”Desktop” の利用イメージです。
“Desktop” のアイコンをダブルクリックします。
先ほどと同じエラーが “Desktop” で発生です。
RemoteApp の例にならい、一度登録を削除します。 RemoteApp では個別のアプリケーションをすべて削除し、登録しましたが Desktop はその概念がありません。 まずは試しにWorkspace からアプリケーショングループの登録を解除し、再度追加して試します。
“Desktop” のアプリケーショングループは無くなりました。
Workspace にDesktop のアプリケーショングループを追加し、再度接続を試みます。
問題は解消されません。
次はDesktop のアプリケーショングループから割り当てたアカウントを削除し、再登録します。
割り当てをすべて削除し、
一度、クライアント側でフィードを更新します。 Desktop のアプリケーショングループは見えなくなります。
再登録します。
クライアント側でフィードを更新し接続を試みます。
しかし、本来、表示されてくるはずのデスクトップのアプリケーショングループが見えてきません。 トラブルはより深みをましてきました。
リモートデスクトップクライアントを終了し、起動しても状況は変わらず。
フィードの登録を解除し、再登録します。 Desktop のアプリケーショングループが表示されました。 起動を試みます。
先ほどまでのエラーは発生しません。 資格情報を入力します。
やっと、やっと、やっと、デスクトップが起動しました。(しかし、まだトラブルは続きます)
Excel は問題なく起動。
しかし、Edge を何度クリックしても起動してきません。またもや問題発生です。
タスクマネージャで確認します。マスクしているのでわかりづらいと思いますが、同じアカウントで2つのセッションがあることがわかります。 片方は切断状態です。 これが原因の可能性大です。
アクティブなセッションでは何度もダブルクリックしたEdge のプロセスは見つかりません。
一方、切断されているセッションではEdge が8つ起動しています。
切断されているセッションのEdge をタスクマネージャから手動でプロセスを停止します。
その上でEdge の起動を試みます。 今度はEdge が正常に起動しました。 1台の仮想マシンに同じアカウントでサインインした状態ではEdge はどちらかのユーザランドでしか起動できないように見えます。
状況から推測するにMulti-Session での制御にまだまだ甘い部分がありそうです。 一番最初にサインインしたアカウントではRemoteAppが正常に動作していました。次にRemoteAppを追加しフィードを更新したタイミングから問題が発生したわけですが結果からみると1台の仮想のWindows 10 に同じアカウントでの二重のサインインが発生し、その後、それぞれのユーザランドの中でアプリケーションが動けばよいものが、競合などから正常に動かない状況につながったかなと。 Edge のRemoteApp 追加と起動から問題が起きたのでEdge 固有の問題があるのかもしれません。
上の話は仮説の仮説のレベルです。 イベントログを確認してどのタイミングで2重のサインインになったのかを確認する、また、問題を再現させ各フェーズごとの状況を見ていく必要がありそうです。
今回はここまでとします。