C#開源專案:SiMay遠端控制管理系統

C#開源專案:SiMay遠端控制管理系統

一個底層基於IOCP非同步通訊模型的Windows遠端控制系統

最後更新 2020/12/4 上午8:33
dWwwang
預計閱讀 7 分鐘
分類
Winform
專題
Winform開源專案 C#開源專案
標籤
.NET C# Winform Winform開源專案 開源專案

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

Gitee 倉庫截圖

Gitee倉庫截圖

下方基於原專案倉庫 readme

系統介紹

  • SiMay 遠端控制管理系統是一個 Windows 遠端控制系統,底層基於 IOCP 的非同步通訊模型,能對海量用戶端即時監控,目前功能已實現:逐行掃描遠端桌面、經典的檔案管理、即時遠端語音、即時攝影機、經典登錄檔管理、命令列終端、即時系統行程管理、使用者桌面檢視牆輪播等功能。並且可擷取 UAC、WinLogon 桌面。系統實現了中間會話伺服器,可支援不同平台多主控端同時監控同一被控端。被控服務端支援綠色啟動及以系統服務方式安裝,專案完全採用 C#.NET 開發,程式碼僅供參考,專案不定期更新,歡迎關注點星星、fork。歡迎入群技術交流:905958449 :laughing: :blush:

企業功能定製項

  • 遠端桌面升級(綜合效能提升 50%、頻寬佔用更小)、Web 版遠端桌面、(攝影機、語音、螢幕廣播)、檔案分發、支援遠端伺服器桌面等功能,歡迎進群諮詢群主。

聲明

  • 作為創作者,我對由此軟體引起的任何行為和/或損害不承擔任何責任。您對自己的行為承擔全部責任,並承認此軟體僅用於教育和研究目的。不得用於您不擁有或有權使用的任何系統。使用此軟體,您自動同意上述內容,感謝支援。

背景

  • 本專案僅為個人專案,經過幾次重構,系統相對比較成熟了,決定開源回饋開源社群,希望更多人能和我一起進步,歡迎吐槽改進。

主控介面

主控介面

建立服務端

建立服務端

遠端桌面

遠端桌面

檔案管理

檔案管理

語音傳輸

語音傳輸

登錄檔管理

登錄檔管理

中間伺服器

中間伺服器

系統專案結構

SiMay.Core【公共核心功能】

  1. SiMay.Basic --基礎通用庫
  2. SiMay.Core.Standard --系統核心統一公共庫【統一通訊指令、共用元件、通訊資料實體等..】
  3. SiMay.Serialize.Standard --輕量級高效能二進位序列化庫【作用:系統通訊資料實體化】
  4. SiMay.ModelBinder --呼叫繫結器

SiMay.RemoteMonitor【主控制端】

  1. SiMay.RemoteControls.Core --主控端核心庫
  2. SiMay.RemoteMonitor.Windows --Windows 主控管理端
  3. SiMay.RemoteMonitor.Web --Web 主控端
  4. SiMay.RemoteMonitorForWebSite --Web 監控前端

SiMay.Platform【平台實現】

  1. SiMay.Platform.Windows -- 基於 Windows 的功能實現

SiMay.RemoteService【遠端被控服務端】

  1. SiMay.RemoteService.Loader --記憶體載入 Loader,實現遠端記憶體載入被控端核心庫
  2. SiMay.ServiceCore --被控端核心庫

SiMay.SessionProvider【會話提供層】

  1. SiMay.Net.SessionProvider --會話提供庫【作用:提供伺服器監聽模式或者中間會話代理協定】
  2. SiMay.Net.SessionProvider.Core --代理協定統一公用庫【作用:統一中間庫和伺服器的通訊指令及序列化等】
  3. SiMay.Net.SessionProviderServiceCore -- 中間服務核心庫
  4. SiMay.Net.SessionProviderService --中間會話代理伺服器【作用:提供保持服務端會話保持、資料轉發功能,基於此實現多平台端監控】

SiMay.Sockets【通訊層】

  1. SiMay.Socket.Standard --輕量級通訊引擎
  2. SiMaySocketTestApp --通訊引擎測試程式

編譯

Bin 為編譯目錄,重新產生後,主控程式將編譯到此目錄,Bin->dat 目錄為被控服務端目錄,被控服務端編譯後在此。(沒有目錄請新建)

執行

  1. 區域網路

主控端:開啟位於 Bin 目錄下的主控端程式 SiMayRemoteMonitor.exe,確認系統設定伺服器位址為 0.0.0.0(監聽本機所有網卡),連接埠預設 5200,使用會話模式為「本機伺服器」,然後儲存設定重新啟動程式, 重啟後日誌輸出監聽成功,即主控端設定正確。

被控服務端建立:開啟主控端 --> 建立客戶 --> 位址輸入本機實體位址(或 127.0.0.1),連接埠設定為服務端監聽連接埠(預設 5200)--> 點選連線測試檢查設定是否正確 --> 建立服務端檔案,服務端檔案即為設定完成後的被控端程式(如提示找不到檔案,請檢查被控服務程式是否存在[編譯步驟是否正確]),雙擊執行被控服務程式即可在主控端看見服務上線資訊,如主控端無上線資訊,請檢查上述步驟是否設定正確。

  1. 廣域網路

條件:需要主控端處於公網環境(或者設定路由內網對應、使用內網對應工具[如花生殼、內網通]),並且開放主控端監聽連接埠(注意檢查連接埠是否開放、防火牆通行規則)。 建立用戶端 --> 被控服務端連線至主控端的公網位址、連接埠即可。

  1. 中間伺服器部署

條件:需要中間伺服器處於公網環境(建議部署在公網伺服器,或者設定路由內網對應),並且開放中間伺服器監聽連接埠(預設 522 連接埠、注意檢查連接埠是否開放、防火牆通行規則)。

主控端設定:系統設定 --> 會話伺服器位址 輸入 中間伺服器的公網位址、連接埠。 --> 設定會話模式為:中間會話模式 --> 確認 AccessKey 與中間伺服器 Accesskey 一致。(中間會話伺服器系統設定位於標題列系統選單右鍵)--> 建立用戶端並選擇會話模式為中間會話模式,IP、連接埠輸入中間伺服器的公網位址即可。

  1. 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 設定的帳號密碼即可登入,連線成功後頁面可看到被控服務端電腦桌面檢視,長按檢視可開啟更多功能。

技術

  1. 元件式系統架構設計
  2. 遠端同步呼叫
  3. 實體訊息傳輸協定
  4. 應用多連線會話支援
  5. 可視區域逐行掃描演算法的遠端桌面
  6. 中間會話服務轉發,支援多個主控端同時即時監控
  7. HOOK 技術
  8. WebSocket Web 端監控
  9. IOCP 非同步 Socket 高效能通訊模型
  10. 基於 Windows WaInXX 系列實現的語音通訊
  11. 基於 Dx 元件擷取攝影機

開發環境

  1. 建議 Visual Studio 2019 企業版

參與貢獻

  1. Fork 本倉庫
  2. 新建 Feat_xxx 分支
  3. 提交程式碼
  4. 新建 Pull Request

未來構想

  1. 行動 Web 監控端
  2. 跨平台的系統管理監控
繼續探索

延伸閱讀

更多文章
同分類 / 同標籤 2024/2/29

Winform中也可以這樣做資料展示

在做winform開發的過程中,經常需要做資料展示的功能,之前一直使用的是gridcontrol控制項,今天想透過一個範例,跟大家介紹一下如何在winform blazor hybrid中使用ant design blazor中的table元件做資料展示。

繼續閱讀
同分類 / 同標籤 2024/2/29

Winform的介面也可以變好看?

前幾天跟大家介紹了在winform中使用blazor hybrid,而且還說配上blazor的UI可以讓我們的winform程式設計的更加好看,接下來我想以一個在winform blazor hybrid中繪圖的範例來進行說明,希望對你有所幫助。

繼續閱讀
同分類 / 同標籤 2021/11/21

開源Winform控制項庫:花木蘭控制項庫

可以編譯該專案。整個控制項除了動畫函數由Silverlight提取出來和ColorEditorExt.cs顏色面板檢視設計器擴充器在網上範例修改而來,其他都是自己在原生控制項基礎上寫的,沒有使用任何第三方函式庫,所以放心使用,沒有侵犯他人著作權的問題。

繼續閱讀