2009-03-11 17 views
1

64ビットWindowsマシンでターミナルサーバーのセッション情報を収集しようとしています。私の質問は2倍です。まず、32ビットマシン上で以下の関数を呼び出しました。これはうまくいきました。wtsapi32.WTSQuerySessionInformation()x64で失敗する

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ビットマシン上でこの関数を呼び出すことについて多くを見つけることができませんでした。第二に、誰もTSクライアントセッション情報を取得するための他のオプションを知っていますか?具体的には、TSにアクセスしているコンピュータ名が必要です。

ありがとうございました。

答えて

1

64ビットマシンでどのようにコールが失敗しますか?私の推測では、関数のANSIバージョンを呼び出しているという事実とは関係があります。おそらく、あなたはUnicodeバージョン(WTSQuerySessionInformationW)でもっとうまくいくでしょう。

しかし、あなたはP /に対処する必要がないように、あなたの2番目の質問に答えるために、あなたはCassiaを使用してみてくださいを呼び出します:

New Cassia.TerminalServicesManager().CurrentSession.ClientName 

私はそれを試してみた場合、私は覚えていないこと以前は64ビットのマシンでしたが、それが動作すれば、少し楽になるかもしれません。

EDIT:64ビットWindows Server 2008 R2ベータマシンでCassiaをテストしただけで正常に動作します。

+0

ダン、あなたは正しいです。私はUnicodeバージョンを使う必要があった –

関連する問題