LoginSignup
1
4

More than 5 years have passed since last update.

WTSQuerySessionでリモート接続元IPアドレスが取れない場合がある(RDGateway-NAT-RemoteApp)

Last updated at Posted at 2018-12-28

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を使うのであれば運用上問題ないことの担保を取る

以上を承知の上、試してみてください。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4