1

我正在尝试在 64 位 Windows 机器上收集终端服务器会话信息。我的问题是两方面的。首先,在 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) 有更好的运气。

但是要回答您的第二个问题,您可以尝试使用Cassia,这样您就不必处理 P/Invokes:

New Cassia.TerminalServicesManager().CurrentSession.ClientName

我不记得我之前是否在 64 位机器上尝试过它,但如果它有效,它可能会让你的事情变得更容易一些。

编辑:刚刚在 64 位 Windows Server 2008 R2 beta 机器上测试了 Cassia,它运行良好。

于 2009-04-09T02:34:35.833 回答