Windows Virtual Desktop #8 .rdpファイル から直接接続する

この記事のWVDは”Windows Virtual Desktop Spring 2020 Release”が対象です。

.rdp ファイルからWindows Virtual Desktop に直接接続できるかテストしてみます。 ここでいう直接とはリモートデスクトップクライアントを起動せずにということです。 具体的には以下の画面です。

それではやってみましょう。

まずは.RDP ファイルを準備します。 一度、リモートデスクトップクライアント経由でWindows Virtual Desktp に接続した後に%localappdata%\rdclientwpf にエクスプローラなどでアクセスします。 %localappdata% はWindows の環境変数で自分のプロファイルのappdata\local を示します。 ほかにも%appdata% や%userprofile% などはそのフォルダを開く場合やログオンスクリプト、ログオフスクリプトでよく使います。

ワークスペース毎にフォルダがあります。 今回接続するワークスペースのフォルダの中に移動します。 



このディレクトリ名ですがworkspace や application groups のResource ID かと思って調べてみたのですが違うようです。 更新日や実際に接続してみて確かめるしかないのが現状です。

フォルダの中に移動します。

“.rdp”を拡張子に持つファイルをデスクトップにコピーします(デスクトップである必要はありません)。また、ファイル名を適当にリネームします。

     ↓

このファイルをダブルクリックして起動してみます。

認証が求められます。 

なお上記の画面はPIN ですがPIN は未対応です。 説明文”Windows Hello、暗証番号(PIN)、またはスマートカード認証情報はサポートされていません” に書いてある通りです。

他の認証方法に変える場合は”その他” をクリックし、WVD 上の Windows 10 にサインインできるドメインアカウントとパスワードを指定しましょう。

しかし、ログオンに失敗します。

原因の予測はついています。 ”.rdp”拡張子のファイルに関連付けらているアプリケーションが何か、Windows Virtual Desktop 専用のリモートデスクトップクライアント”msrdc.exe”なのかOS標準の”mstsc.exe”なのか、おそらくOS標準のものが関連付けされているはずでその結果失敗したはず。確認します。

.rdp ファイルのプロパティを開きます。 プログラムからOS標準のリモートデスクトップクライアントであることがわかりました。

もう一度”msrdc.exe”から.rdpファイルを起動します。

コマンドプロンプトから “%localappdata%\Apps\Remote Desktop”に移動します

まずは”msrdc.exe”を単独実行し、使用方法を確認します。

msrdc.exe の引数にデスクトップにおいた.rdp ファイルを指定して実行します。

c:>”%localappdata%\apps\remote desktop\msrdc.exe” “%userprofile%\desktop\ConnectAppGroups.rdp”

認証要求が来ますので、サインインします(画面はPINですがPINは対応しないのでその他から認証方法を変えて進めます)。

サインインできました。 青い画面がWVD 上のWindows 10 、グレー画面が手元で捜査している物理端末のWindows 10 です。

結果として2回の認証を1回に省略することが出来ました。  また、.rdp ファイルとmsrdc.exe ファイル組み合わせて独自に起動バッチを作ることが出来ることもわかりました。

ここまでの話、WVD を利用したことがある方は何でこんなことをわざわざ調べているのか、接続用のショートカットはスタートメニューに自動的に作成されているじゃないかと思っているかと。

単純に知らなかっただけでテストしながら記事書いている中でわかったことでした。。。 まあまわり道はまわり道でよいこともあるはず。  そしてこの出来合いのショートカットを見ていくと新たな発見もありました。

ショートカットの場所を開きます。

このショートカットのプロパティを開きます。

このリンク先に着目します。

アカウント情報な度一部マスキング(XXXX)していますが、黄色ハイライト部分が気になります。

“C:\Users\XXXX\AppData\Local\Apps\Remote Desktop\msrdc.exe” “C:\Users\XXXX\AppData\Local\rdclientwpf\3eabc1d8-6480-4047-a1a4-4ffed4a1882d\d70656d3-6064-4f6f-33c1-08d7f8bf9016.rdp” /u:XXXX@m.bigriver.jp /l:2 /p:12336

“msrdc.exe” コマンドの引数は”/u” だけと思っていました。 “/l” と “/p” があるようです。 特に”/p” はよくパスワード指定で使われています(上記の”/p:12336″の数字は私のパスワードではない)。  

画像に alt 属性が指定されていません。ファイル名: image-341.png

Microsoft Docs を見ても”/” と”/p” の使い方は見つからず。 ただ、/p はパスワードではなさそうなことがわかりました。 数字部分が変動するためです。 何かのプロセスが何かのタイミングでこのショートカットファイルを変更しているようです。 別記事で書いていた msrdcw.exe(Windows Virtual Desktop 専用のリモートデスクトップクライアント) ファイルを process monitor.exe で分析したときにリンクファイルを Read / Write していたのでおそらくmsrdcw.exeでしょう。  今回はprocess monitor.exe は利用しませんが msrdcw.exe を起動したタイミングで /p:8636 に変わったの間違いないでしょう。 ただ、何のためにこの数字を引数としているかは謎のまま。 値は増えるだけではなく小さくなることもあるので接続回数や経過時間的なものを示すものではなさそうです。

“/l” は2を色々と変えてみましたが違いはわからず。

最終的に接続用のバッチを作ることが可能なことがわかりました。 接続用のバッチを管理することで以下のような運用を実現できそうです。

  • 利用者のデスクトップやファイルサーバに接続用のバッチを配布し、エンドユーザへの提供を一元管理する
  • メンテナンスや何かしらの理由で接続先を変えたり、停止したり、それをPCやユーザ単位にコントロールする
  • 起動バッチに時刻やPC環境の情報をログ出力する処理を埋め込み利用状況の調査やトラブルシューティングに役立てる

今回の記事はここまでとします。