1. 程式人生 > >遠端登陸最小化或關閉 模擬鍵盤操作失效

遠端登陸最小化或關閉 模擬鍵盤操作失效

問題原因分析:

因為通過mstsc啟動遠端桌面連線時,被連線的Windows會啟動一個會話(Session)。此時你對遠端桌面窗口裡面的所有操作(滑鼠,鍵盤)將會‘翻譯’成TCP包傳輸過去,被連線的Windows接收到這些包之後,‘還原’命令並且在當前的活動會話上面執行。而當你斷開連線時(點X關閉),會話變成斷開狀態,Windows會自動關閉會話(這裡這樣說是不準確的,事實上會話還是在的,只是狀態變成斷開的),也就導致了所有基於GUI的操作‘失效’了。 當最小化遠端桌面時,Windows為了節約網路頻寬傳輸,會暫時‘關閉會話’,導致你的模擬操作程式失效。 最初級的兩個解決方案: 1. 到遠端電腦上,登入,然後關顯示器,走人,記住不要遠端登入它; 2. 遠端連線,永遠不要關,也不能最小化。 當然我也有更好的解決方案,我的解決方案可以實現遠端桌面的視窗最小化或是關閉而不影響模擬鍵盤滑鼠的指令碼。 1.視窗最小化失效的解決方案
: 修改登錄檔項(注:從機器A通過遠端桌面連線機器B,則需要在機器A上修改登錄檔) 32位機器: HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientRemoteDesktop_SuppressWhenMinimized或 HKEY_LOCAL_MACHINESoftwareMicrosoftTerminal Server ClientRemoteDesktop_SuppressWhenMinimized設定資料型別DWord,值為2   64位機器路徑不同: HKEY_CURRENT_USERSoftwareWow6432NodeMicrosoftTerminal Server ClientRemoteDesktop_SuppressWhenMinimized或HKEY_LOCAL_MACHINESoftwareWow6432NodeMicrosoftTerminal Server ClientRemoteDesktop_SuppressWhenMinimized設定資料型別DWord,值為2 2.關機失效的解決方案:
遠端桌面mstsc遠端登入虛擬機器時,在虛擬機器中新建文字文件,寫入內容 @%windir%\System32\tscon.exe 0 /dest:console @%windir%\System32\tscon.exe 1 /dest:console @%windir%\System32\tscon.exe 2 /dest:console 將文字文件重新命名為‘Close_RDP’,並將字尾名改為‘.bat’,雙擊檔案‘EnableCloseRDP.bat’關閉虛擬機器,在虛擬機器關閉後帶有SendKey的指令碼可以正常執行。 參考資料: http://support.smartbear.com/viewarticle/30747/ http://www.networkautomation.com/urc/knowledgebase/running-interactive-tasks-in-minimized-remote-desktop-windows/4ecdf43e03470/ http://www.ranorex.com/forum/running-automation-via-remote-desktop-t1295.html