#WTSQuerySession
XenAppやRemoteApp、はたまたRDPで接続元のIPアドレスをとるときに使うAPIです。
https://msdn.microsoft.com/ja-jp/library/cc429625.aspx
先日、以下の環境化にてIPアドレスが取れなくなり酷い目にあったので対処した方法を記載します。
#IPアドレスが取れない
RemoteApp構成の環境でIPアドレスが0.0.0.0や0.0.30.122とかわけのわからない値になる現象が発生。
環境を聞いたところ以下の構成になっていた。
ローカル端末→RDゲートウェイ→NAT変換→RemoteApp(Ap1) or RemoteApp(Ap2)
以下の場合は発生しない。
ローカル端末→NAT変換→RemoteApp
ローカル端末→NetScaler→NAT変換→XenApp(Ap1) or XenApp(Ap2)
なんでだろうな。と調査したところ
https://docs.microsoft.com/ja-jp/windows/desktop/api/wtsapi32/ns-wtsapi32-_wts_client_address
Remakeのところに、NATを使ってたり・VPN使うととれないよ。って書いてある。
これを突き付けて無理ですといったところ何とかしてくれないと困ると…
#解決策
一応これを使うことで回避できた。
https://docs.microsoft.com/en-us/windows/desktop/termserv/win32-tsgatewayconnection
WMIの機能みたいですが、残念なことにVB.NETでこのWin32-TSGatewayConnectionがうまく動かなかったので、PowerShellをVB.NETから起動して取るという荒業に。
※絞り込み条件はUSERNAMEを使いました。
RemoteAppは同一アカウントで先にログインしてるユーザは後にログインするユーザによって
はじき出される仕様なので理論的には一意になるはず。
一考するのであれば
- WMIを起動できるアドミニストレータ権限のユーザの用意
- 絞り込み条件にUSERNAMEを使うのであれば運用上問題ないことの担保を取る
以上を承知の上、試してみてください。