Chapter 8 遠端桌面協定
大綱 簡介 終端服務連線 遠端桌面協定 .rdp檔參數設定 RDP註冊表設定 虛擬通道 伺服器端 客戶端 範例
簡介 遠端桌面協定(Remote Desktop protocol,RDP)屬於Microsoft Windows Terminal Services的一部份。 使用者登入終端機,執行主機電腦上的應用程式、存取檔案、資料庫和網路資源等等。 應用程式完全是在伺服器上執行,遠端桌面客戶端並無執行任何本機的應用程式。
簡介 (cont.) 允許多個客戶端同時登入 每個客戶端連線都是獨立的 由主機作業系統來管理多個使用者存取共用資源的問題 遠端桌面與傳統終端機環境的比較: 傳統終端機環境中的終端機只提供文字輸入與輸出 遠端桌面客戶端提供了完整的圖形使用者介面。 Windows作業系統桌面。 支援各式各樣的輸入設備,如鍵盤與滑鼠。
議程 簡介 終端服務連線 遠端桌面協定 .rdp檔參數設定 RDP註冊表設定 虛擬通道 伺服器端 客戶端 範例
終端服務連線 當使用者登入遠端桌面時,啟動一個連線 每個連線具有唯一的連線識別碼。 每個連線都會產生互動視窗工作站(Interactive Window Station): 互動視窗工作站唯一的名稱是 WinSta0。 每個視窗工作站都有三種標準桌面: 視窗登入桌面 螢幕保護程式桌面 互動桌面
終端服務連線 (cont.) 當互動使用者登出遠端桌面時,伺服器上的客戶端連線就會被刪除,相關的視窗與桌面也會被刪除。
議程 簡介 終端服務連線 遠端桌面協定 .rdp檔參數設定 RDP註冊表設定 虛擬通道 伺服器端 客戶端 範例
遠端桌面協定 RDP是以TCP/IP作為傳送協定,在客戶端與伺服器間建立連線。 Windows 5.0使用RDP 5.5的版本。 Windows CE .NET客戶端可以與以下伺服器連線: Windows NT Terminal Server:RDP 4.0 Windows 2000 Terminal Services:RDP 5.0 Windows XP Profession Edition:RDP 5.1或更新的版本
RDP 5.5 (1/3) 與Unicode相容 允許網路本地化、自動斷線與遠端設定組態 以客戶端bitmap快取或壓縮方式,提供可變的頻寬配置 支援多個虛擬通道 提供遠端控制功能 網路負載平衡(NLB)功能 支援高彩8位元、16位元和24位元圖形
RDP 5.5 (2/3) 剪貼簿共享 將本機印表機重新導向,使遠端應用程式能將資料在本機的印表機中輸出。 遠端應用程式播放的聲音資料,可以在遠端或本機端播放。 將本機傳輸埠重新導向,使遠端應用程式可以使用本機端的平行埠與序列埠。 將本機檔案系統重新導向,使遠端應用程式可以使用本機端的檔案系統。
RDP 5.5 (3/3) 支援 file redirector filter,允許顯示特定的目錄 提供終端服務客戶端存取使用權(TS CAL)維護工具 在GWES中執行
大綱 簡介 終端服務連線 遠端桌面協定 .rdp檔參數設定 RDP註冊表設定 虛擬通道 伺服器端 客戶端 範例
.rdp檔 參數設定 (1/6) 關鍵字:類型:預設值 說明 AudioRedirectionMode:i:0 設定聲音在哪一端播放。0值表示在客戶端播放;1值表示在遠端電腦播放;2值表示不播放聲音。 AutoReconnectionEnabled:i:1 連線遺失時,設定是否自動重新連線。1值表示啟動自動重新連線;0值表示關閉。 BBarEnabled:i:1 設定是否顯示連線桿(connection bar),方便使用者將遠端桌面放大、縮小,以及與本機桌面切換。0值表示不顯示連線桿;1值表示顯示。 BBarShowMinimizeBtn:i:1 設定連線桿上是否顯示視窗縮小按鈕。0值表示不顯示;1值表示顯示。 BbarShowPinButton:i:0 設定連線桿上是否顯示固定按鈕(pin button)。0值表示不顯示固定按鈕,連線桿固定在遠端連線視窗的上方,遠端的桌面畫面在下方顯示;1值表示顯示固定按鈕,使用者可以取消從UI(User interface)取消固定連線桿。
.rdp檔 參數設定 (2/6) 關鍵字:類型:預設值 說明 BBarShowRestoreBtn:i:1 BBarPinned:i:1 設定是否將連顯桿固定於shell。0值表示,當滑鼠離開連線桿時,連線桿會自動隱藏;1值表示永久顯示連線桿。 BitmapCacheSize:i:1500 設定記憶體的位元圖高速緩衝儲存器的大小,單位是KB,最大值是32000。 BitmapPersistCacheLocation:s:\Temp 設定位元圖高速緩衝儲存器的位置。 BitmapPersistenceEnabled:i:0 設定是否選擇位元圖高速緩衝儲存器。0值表示不選擇位元圖高速緩衝儲存器;1值表示選擇。 ColorDepthID:i:4 設定色彩深度(bits per pixel,bpp)。0值表示4 bpp;1值表示8 bpp;2值表示15 bpp;3值表示16 bpp;4值表示24 bpp。
.rdp檔 參數設定 (3/6) 關鍵字:類型:預設值 說明 Compress:i:1 啟動檔案和目錄壓縮。預設為啟動壓縮,建議不要改變此值。 ConnectToServerConsole:i:0 只適用於non-Windows-based Thin Client,設定使用命令提示字元建立連線。0值表示連線至終端服務通話,Windows XP Professional不支援此功能;1值表示建立連線至主機端。 desktopheight:i:1024 設定顯示的像素解析高度,預設值由作業系統檢測設備的結果。 desktopwidth:i:1280 設定顯示的像素解析寬度,預設值由作業系統檢測設備的結果。 disable full window drag:i:1 設定啟動或關閉full window drag功能。1值表示啟動;0值表示關閉。 disable menu anims:i:1 設定啟動或關閉選單動畫。1值表示啟動;0值表示關閉。
.rdp檔 參數設定 (4/6) 關鍵字:類型:預設值 說明 disable themes:i:0 disable wallpaper:i:1 設定是否啟動或關閉桌不。1值表示啟動;0值表示關閉。 DisableFileAccess:i:1 設定使用者使否能存取本機檔案系統(local file system)。1值表示關閉此功能,UI上的另存新檔和開啟按鈕無法使用;0值表示使用者可以存取區域檔案系統。 domain:s:C1554501-A 設定哪個domain的使用者能登入遠端設備。此無預設值。 EnableDriveRedirection:i:1 設定是否啟動裝置重新導向。1值表示啟動;0值表示關閉。 EnablePortRedirection:i:1 設定是否啟動COM埠重新導向。1值表示啟動;0值表示關閉。
.rdp檔 參數設定 (5/6) 關鍵字:類型:預設值 說明 EnablePrinterRedirection:i:1 設定是否啟動印表機重新導向。1值表示啟動;0值表示關閉。 EnableSCardRedirection:i:1 設定是否啟動smart card重新導向。1值表示啟動;0值表示關閉。 KeyboardHookMode:i:2 當ALT-TAB同時被按壓時,設定顯示什麼畫面。0值表示;1值表示顯示遠端裝置的項目;2值表示顯示全螢幕。 MaxReconnectAttempts:i:20 連線遺失後,設定重新連線次數的最大值。 MCSPort:i:3389 設定RDP的Winsock埠。預設值為3389,如果終端服務使用別的埠,在此修改。
.rdp檔 參數設定 (6/6) 關鍵字:類型:預設值 說明 Password:s:<password> 設定使用者密碼,對應UserName的使用者帳戶。 ServerName:s:65.4.18. 設定遠端設備的IP位址: StartFullScreen:i:1 開啟遠端服務通話時,設定是否顯示全螢幕。1值表示顯示全螢幕;0值表示不顯示。 AlternateShell:s:<startup shell or application> 設定通話是否使用alternate shell或啟動應用程式。 UserName:s:<name> 設定可以登入遠端設備的使用者名稱。 WorkingDir:s:<folder> 設定alternate shell或啟動應用程式存放的資料夾。
大綱 簡介 終端服務連線 遠端桌面協定 .rdp檔參數設定 RDP註冊表設定 虛擬通道 伺服器端 客戶端 範例
RDP Registery設定 控制終端服務的所有連線 啟動或關閉裝置重新導向 HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client 啟動或關閉裝置重新導向 HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\<Connection Name>\EnableDriveRedirection
RDP Registery設定 (cont.) 終端服務客戶端 HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client 載入虛擬通道外接式DLL HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client\Default\Addins\<virtual channel name>
控制終端服務的所有連線 BitmapCacheSize : REG_DWORD 值:類型 說明 BitmapCacheSize : REG_DWORD 設定記憶體的位元圖高速緩衝儲存器的大小,預設值是1500,單位是KB,最大值是32000。 BitmapPersistCacheSize : REG_DWORD 設定位元圖快速緩衝儲存器的檔案大小,預設值是10,單位是KB。 RequireVKPackets : REG_DWORD 此註冊值是保留給處理鍵盤輸入使用,預設值是0,不能修改。
啟動或關閉裝置重新導向 註冊碼=1,代表啟動(預設);0代表關閉。 當啟動裝置重新導向,使用者可以使用檔案重新導向過濾器(file redirection filter)來存取指定的目錄。 設定存取的目錄 HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\FilterFsd RootPath="\\"
終端服務客戶端 值:類型 說明 BitmapPersistCacheLocation : REG_DWORD 設定cache file儲存的資料夾路徑,預設是\Windows\temp。 DisableFileAccess : REG_DWORD 設定使用者是否能存取本機檔案系統。預設值為1,表示關閉本機檔案系統,使用者無法使用UI的另存新檔和開啟按鈕。0值表示允許使用者存取本機檔案系統。 FullScreenAlways : REG_DWORD 遠端連線時,預設執行全螢幕。使用者可以增加此註冊碼,來改變視窗的大小。0值表示啟動窗口模式(windowed mode);1值表示關閉窗口模式,遠端桌面連線對話視窗不提供選項讓使用者改變遠端桌面的大小,RDP通話永遠以全螢幕模式執行。 Windows Thin Client Shell的預設值為1。
載入虛擬通道外接式DLL 值:類型 說明 Name: REG_SZ 設定要載入的虛擬通道外接式DLL的名稱,用逗號(,)來分隔。沒有預設值。
RDP安全性 不在設備上儲存密碼 增加BbarShowPinButton註冊碼 小心自動執行的script 留意註冊表設定 關閉終端服務的某些功能
大綱 簡介 終端服務連線 遠端桌面協定 .rdp檔參數設定 RDP註冊表設定 虛擬通道 伺服器端 客戶端 範例
虛擬通道 RDP 5.1以後的版本都有支援。 客製化的資料格式,與RDP無關。使用者可直接新增功能,不用修改RDP。 需要虛擬通道的情況 核心模式的驅動程式(序列埠或印表機驅動程式) 檔案系統重新導向 使用者模式的應用程式(遠端剪下與貼上) 聲音裝置
虛擬通道 (cont.) 虛擬通道應用程式需要客戶端和伺服器端的元件: 伺服器端元件 客戶端元件 可以是使用者模式的應用程式,或核心模式的驅動程式 客戶端元件 為動態鏈結程式庫(Dynamic Link Library,DLL) 在建立遠端連線時,必須將DLL載入本機端的記憶體中
伺服器端 啟動虛擬通道應用程式 在註冊表中新增WTSVirtualChannelOpen子鍵(subkey),並將應用程式名稱儲存起來 logon script 啟動資料夾 使用者手動開啟 在註冊表中新增WTSVirtualChannelOpen子鍵(subkey),並將應用程式名稱儲存起來 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\Addins
伺服器端函式 函式 說明 WTSVirtualChannelClose 關閉虛擬通道。 WTSVirtualChannelPurgeInput 清理特定虛擬通道中等候輸入的資料,這些資料是從客戶端傳送至伺服器端。 WTSVirtualChannelPurgeOutput 清理特定虛擬通道中等候輸出的資料,這些資料是從伺服器端傳送至客戶端。 WTSVirtualChannelQuery 回傳特定虛擬通道的相關資訊。 WTSVirtualChannelRead 從虛擬通道的伺服器端讀取資料。 WTSVirtualChannelWrite 將資料寫入虛擬通道的伺服器端。
大綱 簡介 終端服務連線 遠端桌面協定 .rdp檔參數設定 RDP註冊表設定 虛擬通道 伺服器端 客戶端 範例
客戶端 是一個動態鏈結程式庫(DLL) 在終端服務初始化時,載入到客戶端電腦。 必須在客戶端電腦註冊DLL 客戶端DLL的功能 當RDP在Microsoft ActiveX Control模式執行時,提供VirtualChannelEntry函式功能。 當RDP在GWES(Graphics Windowing and Events Subsystem)模式執行時,提供VirtualCnannelEntryEx函式功能。
虛擬通道客戶端函式 - Microsoft ActiveX Control模式執行 說明 VirtualChannelInit 註冊客戶端所使用的虛擬通道名稱,並提供VirtualChannelInitEvent回撥(callback),讓終端服務通知客戶端會影響客戶端連線的事件。 VirtualChannelOpen 啟動指定虛擬通道的客戶端,並提供VirtualChannelOpenEvent回撥(callback),讓終端服務通知客戶端會影響客戶端連線的事件。 VirtualChannelWrite 將資料寫入虛擬通道,終端服務會將此資料傳送到虛擬通道的伺服器端,伺服器端呼叫WTSVirtualChannelRead函式來讀取資料。 VirtualChannelClose 關閉虛擬通道。
虛擬通道客戶端函式 - GWES模式執行 函式 說明 VirtualChannelInitEx 註冊客戶端所使用的虛擬通道名稱,並提供VirtualChannelInitEventEx回撥(callback),讓終端服務通知客戶端會影響客戶端連線的事件。 VirtualChannelOpenEx 啟動指定虛擬通道的客戶端,並提供VirtualChannelOpenEventEx回撥(callback),讓終端服務通知客戶端會影響客戶端連線的事件。 VirtualChannelWriteEx 將資料寫入虛擬通道,終端服務會將此資料傳送到虛擬通道的伺服器端。 VirtualChannelCloseEx 關閉虛擬通道。
客戶端註冊 使用者必須將客戶端DLL的名稱儲存在註冊表中 HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default\Addins 適合所有的連線 HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\connection\Addins 適合指定的連線
客戶端註冊 (cont.) Name = DLLname RemoteControlPersistent = flag (optional) DLLname可以是完整的路徑。如果DLLname不包含路徑,則會使用標準DLL搜尋方式 RemoteControlPersistent = flag (optional) flag=0(預設):當連線或中斷時,會發送相關事件訊號。 flag=1:當遠端控制開始或停止時,不會發送通知。
大綱 簡介 終端服務連線 遠端桌面協定 .rdp檔參數設定 RDP註冊表設定 虛擬通道 伺服器端 客戶端 範例
範例 伺服器端 客戶端程式。
伺服器端程式 伺服器端 取得客戶端機器的系統資訊和記憶體資訊 每兩秒更新一次 當客戶端終止連線時,伺服器端便停止取得資訊 客戶端重新連線時,則重新啟動 當使用者按Ctrl+C或Ctrl+Break,伺服器端應用程式就會結束,並且發出一個事件通知,停止取得系統資訊並清除所有的外部控制。
客戶端程式 伺服器端應用程式傳送一個封包給客戶端DLL,判斷封包為TSVERSIONINFO或TSMEMORYINFO類型,引發worker thread,將請求封包寫入虛擬通道 當客戶端終止連線時,客戶端DLL會清除,worker thread會發出停止通知,如果五秒內沒有停止,就會終止。
伺服器端 (1/4)
伺服器端 (2/4)
伺服器端 (3/4)
伺服器端 (4/4)
客戶端 (1/3)
客戶端 (2/3)
客戶端 (3/3)
結語 終端服務通話 遠端桌面協定 .rdp檔參數和RDP註冊表設定 虛擬通道
謝謝指教!