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