我正在尝试在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位计算机上,此函数调用失败。有没有人知道如何解决这个问题?我google了一下,但在64位机器上调用这个函数找不到多少。第二,有没有人知道获取TS客户端会话信息的任何其他选项?具体来说,我需要访问TS的计算机名称。
非常感谢你的帮助。
答案 0 :(得分:1)
64位计算机上的呼叫到底是怎么回事?我的猜测是,它与你正在调用函数的ANSI版本有关。也许你对Unicode版本(WTSQuerySessionInformationW)有更好的运气。
但要回答你的第二个问题,你可以尝试使用Cassia,这样你就不必处理P / Invokes:
New Cassia.TerminalServicesManager().CurrentSession.ClientName
我不记得以前是否曾在64位机器上试过它,但是如果它有效,它可能会让事情变得更容易。
编辑:刚刚在64位Windows Server 2008 R2 beta机器上测试了Cassia,它运行正常。