本專案是一個 Windows 遠端控制系統,專案完全採用 C#.NET 開發,實現了基於逐行掃描演算法的遠端桌面、桌面檢視牆、檔案管理、即時語音、視訊監控、登錄檔管理、即時行程管理等功能,各模組採用獨立連線,支援異常情況重連。實現了中間會話伺服器,支援多主控端同時監控,支援 Web 端,歡迎點 Star 關注,專案不定期更新,原始碼僅供參考,不得用於非法用途,否則一切後果自負。
Gitee 倉庫截圖

下方基於原專案倉庫 readme
系統介紹
- SiMay 遠端控制管理系統是一個 Windows 遠端控制系統,底層基於 IOCP 的非同步通訊模型,能對海量用戶端即時監控,目前功能已實現:逐行掃描遠端桌面、經典的檔案管理、即時遠端語音、即時攝影機、經典登錄檔管理、命令列終端、即時系統行程管理、使用者桌面檢視牆輪播等功能。並且可擷取 UAC、WinLogon 桌面。系統實現了中間會話伺服器,可支援不同平台多主控端同時監控同一被控端。被控服務端支援綠色啟動及以系統服務方式安裝,專案完全採用 C#.NET 開發,程式碼僅供參考,專案不定期更新,歡迎關注點星星、fork。歡迎入群技術交流:905958449 :laughing: :blush:
企業功能定製項
- 遠端桌面升級(綜合效能提升 50%、頻寬佔用更小)、Web 版遠端桌面、(攝影機、語音、螢幕廣播)、檔案分發、支援遠端伺服器桌面等功能,歡迎進群諮詢群主。
聲明
- 作為創作者,我對由此軟體引起的任何行為和/或損害不承擔任何責任。您對自己的行為承擔全部責任,並承認此軟體僅用於教育和研究目的。不得用於您不擁有或有權使用的任何系統。使用此軟體,您自動同意上述內容,感謝支援。
背景
- 本專案僅為個人專案,經過幾次重構,系統相對比較成熟了,決定開源回饋開源社群,希望更多人能和我一起進步,歡迎吐槽改進。
主控介面

建立服務端

遠端桌面

檔案管理

語音傳輸

登錄檔管理

中間伺服器

系統專案結構
SiMay.Core【公共核心功能】
- SiMay.Basic --基礎通用庫
- SiMay.Core.Standard --系統核心統一公共庫【統一通訊指令、共用元件、通訊資料實體等..】
- SiMay.Serialize.Standard --輕量級高效能二進位序列化庫【作用:系統通訊資料實體化】
- SiMay.ModelBinder --呼叫繫結器
SiMay.RemoteMonitor【主控制端】
- SiMay.RemoteControls.Core --主控端核心庫
- SiMay.RemoteMonitor.Windows --Windows 主控管理端
- SiMay.RemoteMonitor.Web --Web 主控端
- SiMay.RemoteMonitorForWebSite --Web 監控前端
SiMay.Platform【平台實現】
- SiMay.Platform.Windows -- 基於 Windows 的功能實現
SiMay.RemoteService【遠端被控服務端】
- SiMay.RemoteService.Loader --記憶體載入 Loader,實現遠端記憶體載入被控端核心庫
- SiMay.ServiceCore --被控端核心庫
SiMay.SessionProvider【會話提供層】
- SiMay.Net.SessionProvider --會話提供庫【作用:提供伺服器監聽模式或者中間會話代理協定】
- SiMay.Net.SessionProvider.Core --代理協定統一公用庫【作用:統一中間庫和伺服器的通訊指令及序列化等】
- SiMay.Net.SessionProviderServiceCore -- 中間服務核心庫
- SiMay.Net.SessionProviderService --中間會話代理伺服器【作用:提供保持服務端會話保持、資料轉發功能,基於此實現多平台端監控】
SiMay.Sockets【通訊層】
- SiMay.Socket.Standard --輕量級通訊引擎
- SiMaySocketTestApp --通訊引擎測試程式
編譯
Bin 為編譯目錄,重新產生後,主控程式將編譯到此目錄,Bin->dat 目錄為被控服務端目錄,被控服務端編譯後在此。(沒有目錄請新建)
執行
- 區域網路
主控端:開啟位於 Bin 目錄下的主控端程式 SiMayRemoteMonitor.exe,確認系統設定伺服器位址為 0.0.0.0(監聽本機所有網卡),連接埠預設 5200,使用會話模式為「本機伺服器」,然後儲存設定重新啟動程式, 重啟後日誌輸出監聽成功,即主控端設定正確。
被控服務端建立:開啟主控端 --> 建立客戶 --> 位址輸入本機實體位址(或 127.0.0.1),連接埠設定為服務端監聽連接埠(預設 5200)--> 點選連線測試檢查設定是否正確 --> 建立服務端檔案,服務端檔案即為設定完成後的被控端程式(如提示找不到檔案,請檢查被控服務程式是否存在[編譯步驟是否正確]),雙擊執行被控服務程式即可在主控端看見服務上線資訊,如主控端無上線資訊,請檢查上述步驟是否設定正確。
- 廣域網路
條件:需要主控端處於公網環境(或者設定路由內網對應、使用內網對應工具[如花生殼、內網通]),並且開放主控端監聽連接埠(注意檢查連接埠是否開放、防火牆通行規則)。 建立用戶端 --> 被控服務端連線至主控端的公網位址、連接埠即可。
- 中間伺服器部署
條件:需要中間伺服器處於公網環境(建議部署在公網伺服器,或者設定路由內網對應),並且開放中間伺服器監聽連接埠(預設 522 連接埠、注意檢查連接埠是否開放、防火牆通行規則)。
主控端設定:系統設定 --> 會話伺服器位址 輸入 中間伺服器的公網位址、連接埠。 --> 設定會話模式為:中間會話模式 --> 確認 AccessKey 與中間伺服器 Accesskey 一致。(中間會話伺服器系統設定位於標題列系統選單右鍵)--> 建立用戶端並選擇會話模式為中間會話模式,IP、連接埠輸入中間伺服器的公網位址即可。
- Web 端監控
編譯 SiMay.RemoteMonitor.Web.exe,Web 服務為控制檯形式無系統設定介面,可直接使用 Windows 控制端儲存的系統設定檔 SiMayConfig.ini,會話模式可使用伺服器模式或者中間會話模式啟動,啟動成功後控制檯列印監聽成功或初始化成功字樣即設定正確(伺服器模式為監聽成功,中間會話模式為初始化成功 及 WebSocket 連接埠監聽成功),如有被控端連線成功,控制檯會即時列印上線連線資訊,Web 服務設定完成。
上述 Web 服務設定完成後,下一步需要部署 Web 網站 SiMay.WebRemoteMonitor,首先開啟 Index.html 檔案編輯 WebSocket 連線位址,指向 Web 服務的公網位址與連接埠即可。
使用瀏覽器,存取 SiMay.WebRemoteMonitor 網站,頁面彈出 Id、Key 輸入框即表示與 Web 服務連線成功,輸入 SiMay.RemoteMonitorFor.Web.exe 設定的帳號密碼即可登入,連線成功後頁面可看到被控服務端電腦桌面檢視,長按檢視可開啟更多功能。
技術
- 元件式系統架構設計
- 遠端同步呼叫
- 實體訊息傳輸協定
- 應用多連線會話支援
- 可視區域逐行掃描演算法的遠端桌面
- 中間會話服務轉發,支援多個主控端同時即時監控
- HOOK 技術
- WebSocket Web 端監控
- IOCP 非同步 Socket 高效能通訊模型
- 基於 Windows WaInXX 系列實現的語音通訊
- 基於 Dx 元件擷取攝影機
開發環境
- 建議 Visual Studio 2019 企業版
參與貢獻
- Fork 本倉庫
- 新建 Feat_xxx 分支
- 提交程式碼
- 新建 Pull Request
未來構想
- 行動 Web 監控端
- 跨平台的系統管理監控
- 倉庫位址:SiMay 遠端控制管理系統