1

64 ビット Windows マシンでターミナル サーバー セッション情報を収集しようとしています。私の質問は 2 つあります。まず、32 ビット マシンで次の関数を呼び出しましたが、これは正常に機能しました。

Private Declare Function WTSQuerySessionInformation Lib "wtsapi32" _
                  Alias "WTSQuerySessionInformationA" _
                 (ByVal hServer As Integer, _
                  ByVal SessionID As Integer, _
                  ByVal WTSInfoClass As Integer, _
                  ByRef ppBuffer As String, _
                  ByRef lLen As Integer) As Integer

ただし、64 ビット マシンでは、この関数呼び出しは失敗します。これを修正する方法について誰か考えがありますか? 私はグーグルで調べましたが、64ビットマシンでこの関数を呼び出すことについてあまり見つけられませんでした. 次に、TS クライアント セッション情報を取得するための他のオプションを知っている人はいますか? 具体的には、TS にアクセスしているコンピューター名が必要です。

助けてくれてありがとう。

4

1 に答える 1

1

64 ビット マシンで呼び出しが失敗するのはどの程度正確ですか? 私の推測では、関数の ANSI バージョンを呼び出しているという事実と関係があると思います。おそらく、Unicode バージョン (WTSQuerySessionInformationW) の方がうまくいくでしょう。

しかし、2 番目の質問に答えるには、P/Invokes に対処する必要がないようにCassiaを使用してみてください。

New Cassia.TerminalServicesManager().CurrentSession.ClientName

以前に 64 ビット マシンで試したことがあるかどうかは思い出せませんが、うまくいけば、作業が少し楽になるかもしれません。

編集: Cassia を 64 ビット Windows Server 2008 R2 ベータ マシンでテストしたところ、正常に動作しました。

于 2009-04-09T02:34:35.833 に答える