[Open Source] A Windows Remote Control System for Real-Time Monitoring of Massive Clients, with Web Support
![[Open Source] A Windows Remote Control System for Real-Time Monitoring of Massive Clients, with Web Support](https://yy123.ink/api/img/1782595431648-hu2xku.jpg)
1. Project Overview
SiMay Remote Control Management System is a Windows remote control system built on an IOCP-based asynchronous communication model. It monitors a massive number of clients in real time. Its current features include line-by-line scanning remote desktop assistance, classic file management, real-time remote audio, real-time camera monitoring, classic registry management, command-line terminal, real-time system process management, and carousel-style user desktop view walls. It can also capture UAC and WinLogon desktops. The system implements an intermediate session server, supporting simultaneous monitoring of the same controlled client by multiple controller endpoints across different platforms. The controlled service supports portable startup and installation as a Windows system service. The entire project is developed using C#.NET. The source code is provided for reference only, and the project is updated periodically.
2. Open Source License
Licensed under AGPL-3.0
3. Screenshots

4. Feature Overview
Disclaimer
As the creator, the author assumes no responsibility for any actions and/or damages resulting from this software. You are fully responsible for your own actions and acknowledge that this software is intended for educational and research purposes only. Do not use it on any system that you do not own or have authorization to use. By using this software, you automatically agree to the above terms. Thank you for your support.
Background
This project is a personal project. After several rounds of refactoring, the system has become relatively mature. The author has decided to open-source it and give back to the open-source community, hoping that more people can learn and improve together with the author. Feedback and suggestions for improvement are welcome.
This project is a Windows remote control system developed entirely using C#.NET. It implements features such as remote desktop control based on a line-by-line scanning algorithm, desktop view walls, file management, real-time audio and video monitoring, registry management, and real-time process management. Each module uses an independent connection and supports automatic reconnection in case of exceptions. An intermediate session server has been implemented to support simultaneous monitoring by multiple controller endpoints. Web access is also supported. Feel free to click Start to follow the project. Updates are released periodically. The source code is provided for reference only and must not be used for illegal purposes. You are solely responsible for all consequences arising from misuse.
5. Tech Stack
System Project Structure
SiMay.Core [Common Core Functions]
-
SiMay.Basic -- Basic General-Purpose Library
-
SiMay.Core.Standard -- Unified System Core Library [Unified Communication Commands, Shared Components, Communication Data Entities, etc.]
-
SiMay.Serialize.Standard -- Lightweight, High-Performance Binary Serialization Library [Purpose: Serialization of system communication data entities]
-
SiMay.ModelBinder -- Invocation Binder
SiMay.RemoteMonitor [Controller]
-
SiMay.RemoteControls.Core -- Controller Core Library
-
SiMay.RemoteMonitor.Windows -- Windows Controller Management Client
-
SiMay.RemoteMonitor.Web -- Web Controller
-
SiMay.RemoteMonitorForWebSite -- Web Monitoring Frontend
SiMay.Platform [Platform Implementations]
-
SiMay.Platform.Windows -- Windows-Based Functionality Implementation
SiMay.RemoteService [Remote Controlled Service]
-
SiMay.RemoteService.Loader -- In-Memory Loading Loader, which loads the controlled endpoint's core library into remote memory
-
SiMay.ServiceCore -- Controlled Endpoint Core Library
SiMay.SessionProvider [Session Provider Layer]
-
SiMay.Net.SessionProvider -- Session Provider Library [Purpose: Provides server listening mode or intermediate session proxy protocol]
-
SiMay.Net.SessionProvider.Core -- Unified Common Library for Proxy Protocols [Purpose: Unifies communication commands, serialization, and other functions between the intermediate library and server]
-
SiMay.Net.SessionProviderServiceCore -- Intermediate Service Core Library
-
SiMay.Net.SessionProviderService -- Intermediate Session Proxy Server [Purpose: Provides server-side session persistence and data forwarding, enabling multi-platform monitoring based on this functionality]
SiMay.Sockets [Communication Layer]
-
SiMay.Socket.Standard -- Lightweight Communication Engine
-
SiMaySocketTestApp -- Communication Engine Test Application
Compile
1. Bin is the compilation directory. After rebuilding the project, the controller application will be compiled into this directory. Bin->dat is the controlled service directory, where the controlled service is compiled. (If the directory does not exist, create it manually.)
Run
1. Local Area Network (LAN)
Controller: Open SiMayRemoteMonitor.exe in the Bin directory. Verify that the server address in System Settings is set to 0.0.0.0 (listening on all local network interfaces). The default port is 5200. Set the session mode to = Local Server, then save the configuration and restart the program. If the log displays a successful listening message after restarting, the controller has been configured correctly.
Creating the Controlled Service: Open the controller --> Create Client --> Enter the local physical IP address (or 127.0.0.1) --> Set the port to the server listening port (default: 5200) --> Click Connection Test to verify that the configuration is correct --> Create Server File. The generated server file is the configured controlled client program. (If a file-not-found message appears, check whether the controlled service program exists and whether the compilation steps were performed correctly.) Double-click the controlled service program to run it. The controller should then display the client's online status. If no online status appears, check whether the preceding steps were configured correctly.
2. Wide Area Network (WAN)
Requirements: The controller must be in a public network environment (or have an internal network mapping configured on the router, or use an internal network mapping tool such as Peanut Shell or Neiwangtong). The controller's listening port must also be open. (Make sure the port is accessible and the firewall rules allow traffic.) Create Client --> Configure the controlled service to connect to the controller's public IP address and port.
3. Intermediate Server Deployment
Requirements: The intermediate server must be in a public network environment (preferably deployed on a public cloud server, or configured with router-based internal network mapping). The intermediate server's listening port must also be open (default: 522). Make sure the port is accessible and the firewall rules allow traffic.
Controller Configuration: System Settings --> Enter the intermediate server's public IP address and port in Session Server Address. --> Set the session mode to Intermediate Session Mode. --> Make sure the AccessKey matches the AccessKey configured on the intermediate server. (To access the intermediate session server's system settings, right-click the system menu in the title bar.) --> Create a client and select Intermediate Session Mode. Enter the intermediate server's public IP address and port.
4. Web Monitoring: Compile SiMay.RemoteMonitor.Web.exe. The Web service runs in console mode and does not provide a system settings interface. It can directly use the system configuration file SiMayConfig.ini saved by the Windows controller. The service can be started in either Server Mode or Intermediate Session Mode. If the console displays 'Listening successfully' or 'Initialization successful', the configuration is correct. (In Server Mode, the message is 'Listening successfully'. In Intermediate Session Mode, the messages are 'Initialization successful' and 'WebSocket port listening successfully'.) When a controlled client connects successfully, the console displays its online connection information in real time. The Web service configuration is now complete.
After completing the Web service configuration above, the next step is to deploy the Web application SiMay.WebRemoteMonitor. First, open the Index.html file and edit the WebSocket connection address to point to the Web service's public IP address and port.
Open the SiMay.WebRemoteMonitor website in a browser. If the page displays ID and Key input fields, the connection to the Web service has been established successfully. Enter the account credentials configured in SiMay.RemoteMonitorFor.Web.exe to log in. After connecting successfully, the page displays the desktop view of the controlled service's computer. Long-press the desktop view to access additional features.
Technology
-
Component-Based System Architecture Design
-
Remote Synchronous Invocation
-
Entity Message Transmission Protocol
-
Support for Multiple Application Connections and Sessions
-
Remote Desktop Based on Line-by-Line Scanning of the Visible Area
-
Intermediate Session Service Forwarding, Supporting Simultaneous Real-Time Monitoring by Multiple Controllers
-
HOOK Technology
-
WebSocket-Based Web Monitoring
-
High-Performance Communication Model Based on IOCP Asynchronous Sockets
-
Voice Communication Implemented Using the Windows WaInXX Series
-
Camera Capture Based on Dx Components
Development environment
-
Visual Studio 2019 Enterprise Edition is recommended.