我使用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應用程序)。