2014-06-05 34 views
3

我正在編寫一個程序,並且我想確保它只能在可充當RDP連接主機的Windows機器上運行。例如,一些Windows版本不能做這樣的事情 - 例如win7基本,win7主頁,win8。
我可以檢查Windows版本並將其與RDP主機兼容版本列表進行比較,但我不知道是否有更常用的方法來檢查此功能。也許一些WinAPI方法或特殊的註冊表項。 有什麼建議嗎?檢查Windows機器是否可以充當RDP連接的主機

+0

是否想知道Windows版本是否支持此操作,或者RDP服務是否正在偵聽連接? –

+0

@DavidHeffernan第一個。 –

+1

我認爲你最好的選擇是硬編碼版本檢查 –

回答

0

像David Heffernan建議的版本檢查是硬編碼的。

2

據我瞭解MSDN Remote Desktop Services Administration功能NetServerGetInfo應該給你你想要的信息。

LPSERVER_INFO_101 pSI = NULL; 
if(NetServerGetInfo(NULL, 101, (LPBYTE*)&pSI) == NErr_Success) { 
    const bool bIsTerminalServer = pSI->sv101_type & SV_TYPE_TERMINALSERVER; 
    NetApiBufferFree(pSI); 
} 

其他新聞組帖子建議檢查服務TermService運行(您可以使用QueryServiceStatusEx爲)。

+0

不錯,但似乎這種方法只適用於特殊配置的服務器,不是嗎?我可以通過RDP連接到使用Win8.1 Pro的工作計算機,但bIsTerminalServer == false。 –

+0

@nnatarr我更新了我的答案。在我的Windows 7上,服務沒有運行(遠程桌面被禁用),當我啓用遠程桌面服務啓動時。但是當我再次禁用遠程桌面時,服務仍在運行。也許它仍然有幫助。 –

+0

我需要知道Windows版本是否支持RDP主機。所以,我想,我會遵循David Heffernan的建議。謝謝你的幫助! –

相關問題