C#オープンソースプロジェクト:SiMayリモートコントロール管理システム

C#オープンソースプロジェクト:SiMayリモートコントロール管理システム

IOCP非同期通信モデルをベースにしたWindowsリモート制御システム

最終更新 2020/12/04 8:33
dWwwang
読了目安 4 分
カテゴリ
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 -- メモリローダー、リモートメモリから被制御端末コアライブラリをロード
  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. ワイドエリアネットワーク

条件:マスターコントロール端末がパブリックネットワーク環境にある(またはルーターの内部ネットワークマッピングを設定、内部ネットワークマッピングツール[例:HuaShengke、Neiwangtong]を使用)こと、およびマスターコントロール端末のリスニングポートが開放されていること(ポートが開放されているか、ファイアウォールの通過ルールを確認してください)。 クライアントを作成→被制御サービス端末がマスターコントロール端末のパブリックアドレスとポートに接続するように設定してください。

  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のWebサイトにアクセスします。ページに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 Enterprise

コントリビューション方法

  1. 本リポジトリをFork
  2. 新しいFeat_xxxブランチを作成
  3. コードをコミット
  4. Pull Requestを作成

将来の構想

  1. モバイルWeb監視端末
  2. クロスプラットフォームのシステム管理監視
さらに探索

関連読書

その他の記事
同じカテゴリ / 同じタグ 2024/02/29

Winformでもこんなデータ表示ができる

winform開発の過程で、データ表示機能が必要になることがよくあります。これまではgridcontrolコントロールを使用していましたが、今日は例を通して、winform blazor hybridでant design blazorのtableコンポーネントを使ってデータ表示を行う方法を紹介します。

続きを読む
同じカテゴリ / 同じタグ 2024/02/29

Winformの画面も綺麗にできる?

先日、winformでblazor hybridを使用することを紹介しました。また、blazorのUIを組み合わせることでwinformプログラムのデザインをより美しくできると言いました。今回はwinform blazor hybridで描画する例を挙げて説明します。参考になれば幸いです。

続きを読む
同じカテゴリ / 同じタグ 2021/11/21

オープンソースWinformコントロールライブラリ:花木蘭コントロールライブラリ

このプロジェクトはコンパイル可能です。アニメーション関数はSilverlightから抽出したものと、ColorEditorExt.csのカラーパネルビューデザイナーエクステンダーはネット上のサンプルを修正したもの以外は、すべてネイティブコントロールをベースに自作しており、サードパーティライブラリは一切使用していません。そのため、安心して使用でき、著作権侵害の問題はありません。

続きを読む