【发布时间】:2011-03-09 15:15:57
【问题描述】:
我正在使用the following API call 来确定终端服务器会话中远程客户端的名称:
ret = WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION,
WTS_INFO_CLASS.WTSClientName, buffer, bufferLen)
通常,当应用程序在终端服务器会话中运行时,调用成功(ret != 0)并且buffer 只返回一个空指针。所以我认为这是预期的行为。
然而,在一个客户的机器上,函数开始失败 (ret == 0),GetLastError 返回 5:拒绝访问。 (和往常一样,客户声称他的系统配置没有任何变化。)
所以,我的问题如下:
- 在非终端服务机器(例如“常规”Windows 7 PC)上查询 WTSClientName 时,预期的行为是什么是?
- 返回此错误代码的原因可能是什么?请注意,在我们的测试机器上,函数调用始终按预期运行(成功和空缓冲区),即使用户没有管理权限。
我不知道这是否相关,但我们可以通过从 Web 应用程序内部调用该函数来重现此问题(错误 5)。但是,在这种情况下并非如此(它是一个常规的 Windows 应用程序)。
【问题讨论】: