GMDS針對遠端的支援方式

張貼日期:Jan 19, 2011 3:18:7 AM

很多有遠端控制需求的地方都會採用VNC而不使用微軟自帶的遠端桌面服務, 各有各的理由不多說,

而許多接觸本平台的人員都會摳嗶TCP_FS和配套的專用VNC帶回家用,

因為守著一台電腦控制眾多電腦的需求下, 這真的太好用了... 那麼這裡分享一個秘密吧!

由於從VISTA之後VNC無法透過服務方式取得遠桌畫面, 所以改於啟動資料夾或是排程方式於登入之後執行,

但是有個缺點就是不可以鎖定系統, 其實有個方式可以解決,

這有一個現成的工具, 那就是PsTools裏面的PsExec這支工具, 說是遠端管理工具包, 那把本機當遠端使用就可啦,

所以如果本來要執行的命令如下(路徑位置自行參酌比對)

S:\tool\vncsrv.exe -tfs 192.168.1.110

那就改用這樣的方式執行(路徑位置自行參酌比對)

S:\PsTools\PsExec.exe -s -d -i "S:\tool\vncsrv.exe" -tfs 192.168.1.110

也就是於登入的情形下, 取得SYSTEM權限來執行 vncsrv 就OK囉!!

以這種方式完成連線的VNC遠端桌面, 於鎖定畫面仍然可以持續監控, 也能輸入登入密碼解鎖,

愛用VNC的人就不用再勉強使用微軟遠桌了!

PsExec於第一次執行時會有一個不負責任宣告, 若完全不想看到也可以先加機碼使之忽略

reg add "HKCU\Software\Sysinternals\PsExec" /v "EulaAccepted" /d 1 /t REG_DWORD /f

關鍵都點出來了, 那要如何自動化還是簡化就隨各自的創意去應用吧!

PsTools這個遠端管理工具包裏面有一堆工具而PsExec也有x86和x64的版本,

以前面所說取得SYSTEM權限執行程式的功能於x64的系統下也是跑x86的版本就能完成任務,

也就是只要有x86的版本就通通可以用了, 如果想直接抓這支程式就好也可從這裡: PsExec_v2.2.rar

如果覺得的PsExec太IT了不夠專業, 那就改用RunAsSYSTEM這隻程式,

執行檔是 RunAsSYS.exe(下載), 上面跑VNC的方式就變成如下(路徑位置自行參酌比對)

S:\PsTools\RunAsSYS.exe /a "S:\tool\vncsrv.exe" -tfs 192.168.1.110

其中 /a 的參數是要求非同步方式, 因為VNC是要一直跑而不結束的,

所以不使用預設的等待模式運作, 如果不下 /a 這個參數, 就會留著一個console視窗需自行關閉,

如果要把RunAsSYS應用在批次檔或是console中操作, 那就可以不要用 /a 參數,

使用預設的等待模式(類似 start /wait )運用於命令提示之下會發現非常的實用!

總之以RunAsSYS替代PsExec會變得更有效率, 整體運作過程更是流暢平順,

RunAsSYSTEM這程式如果參數沒指定要執行的程式, 預設是會跑 %windir\System32\cmd.exe

測試視頻: RunAsSYS.exe 管理員權限仍不足,改用SYSTEM權限的工具程式

 ( 被引用為漏洞真無言 研究人員發現Windows Vista中的漏洞, 何況這還是Win10能用的程式 )

另外也有純Win的版本 RunAsSYSw.exe(下載), 用法和 RunAsSYS.exe 一模一樣,

如果希望動作隱形不要有跳出黑視窗則可以改用此版, 特別是在排程運作的設計上特別有用,

往往有些程式設計的不靠譜, 為預防程式掛掉, 會在排程中透過週期或多次排程的方式確認程式有在運作,

這時, 排程會在設定中使用規則: 如果工作已在執行中套用不要啟動新的執行個體,

要能適用這種規則的話就是要跑等待模式(也就是不要用 /a 參數),

不然此情況下如果用console版的會留一個黑視窗在桌面上豈不是很礙觀瞻...

因此改用 RunAsSYSw.exe 來替代就能避免這樣的尷尬了!

要能取得SYSTEM權限至少需具有系統管理員的身份,

可以參考視頻: 以RunAsSYSw示範於相容性中設定管理員權限

以下離題, 純粹記錄一些觀察現象...

在這不知為何要Win10的時代, Win10的設計雜亂無章, APP化+搭NET化使所有的應用變慢了, 相容性也變差了,

用RunnAsSYS去試試開小算盤(calc.exe)和記事本(notepad.exe)就知道像小算盤這樣的應用程式已經不純潔...

而不純潔的console工具也是先透過Win32應用殼層去開啟新console視窗, 這使得RunnAsSYS不能銜接stdio正確運作,

可以由 控制台/程式和功能/開啟或關閉Windows功能 將Telnet Client勾起來把telnet.exe選裝進系統,

再於命令提示字元下分別用RunnAsSYS和RunnAsSYSw去試試呼叫Telnet.exe, 大概就知道意思了!

若有需要以SYSTEM身份使用這類不純潔的應用程式和工具時, 使用RunnAsSYSw來替代RunnAsSYS才能正確操作

如用timeout.exe這隻更簡單的批次檔小工具來觀察, 於Win10上使用出現「錯誤: 不支援輸入重新導向,請立即結束處理程序。

雖然翻譯文怪怪的(可以改看原文), 但能明確瞭解到為何前面會提到是stdio的問題~而Win10看似已經完全放棄支援了!

vncsrv

tcp_fs