RdpManager is a simple RDP connection manager for Windows built with WinForms (.NET).
It provides a lightweight UI to organize and launch Remote Desktop (RDP) connections, including Quick Connect for fast one-off sessions.
I`ve been using AI to code this, mostly for fun.
- Tab organization: add, rename, and remove tabs.
- Embedded RDP sessions via the Microsoft RDP ActiveX control (MsTscAx), with automatic window-based session sizing.
- Fallback launch with native mstsc.exe if embedded launch fails.
- Quick Connect: editable dropdown with typed input, history, and autocomplete.
- Quick Connect settings: default username for Quick Connect.
- Import from Active Directory and bulk import into a selected tab.
- Manage Connections dialog for editing, reassigning tabs, and cleanup.
- Persisted connection list, tab settings, sort settings, and Quick Connect history.
-
Startup
- Program entry point creates and runs MainForm.
- MainForm loads user settings and saved connections from AppData.
- Tabs are initialized, the selected tab is restored, and the connection list is rendered.
-
Data loading and UI state
- Connections are loaded from connections.json.
- Settings are loaded from settings.json.
- Sort mode, selected tab, column widths, and Quick Connect history are restored.
-
Launching a connection
- User launches from list item activate (double-click/Enter), context menu Connect, or Quick Connect.
- MainForm builds a Connection object for the target host.
- Launch path is ActiveX-first:
- Opens an embedded RDP session window (RdpSessionForm) with RdpActiveXHost.
- Configures host, username/domain, optional port, and session behavior.
- Session display size follows the window client size and updates on resize.
- If embedded launch fails, app falls back to mstsc.exe by generating a temporary .rdp file and starting mstsc with that file.
-
Quick Connect behavior
- Accepts host or host:port input.
- Applies default Quick Connect username if configured.
- Saves the entered target to Quick Connect history for autocomplete.
-
Persistence model
- Stored: connection identity data (name, host, port, domain, username, tab, description), tabs, sort state, column layout, Quick Connect history.
- Not stored: session resolution fields are runtime-only and not persisted.
The project Makefile wraps common dotnet and release steps.
-
make build- Builds
RdpManager/RdpManager.csprojin the default configuration.
- Builds
-
make run- Runs the app from source using
dotnet run.
- Runs the app from source using
-
make clean- Runs
dotnet cleanfor the project.
- Runs
-
make publish- Publishes a Release build for the configured runtime.
- Defaults from Makefile:
RUNTIME=win-x64SELF_CONTAINED=truePUBLISH_DIR=publishVERSION=1.0ASSEMBLY_VERSION=$(VERSION)FILE_VERSION=$(VERSION)
- Also enables single-file publish and writes output to the publish directory.
-
make release- Runs
publish, then attempts to:- create tag
v$(VERSION) - push
main - push the version tag
- create tag
- Note: the git commands are prefixed with
-, so failures do not stop the target.
- Runs
Use this flow when producing a versioned build and Git tag.
- Make sure
mainis clean and up to date. - Pick a version number (for example
1.2.0). - Publish with version metadata:
make publish VERSION=1.2.0- Check output in the publish folder (default
publish/). - If everything looks good, run release tagging/push:
make release VERSION=1.2.0- Create/update your GitHub release and upload the published executable/artifacts.
Common variations:
# Publish for a different runtime
make publish VERSION=1.2.0 RUNTIME=win-arm64
# Publish framework-dependent instead of self-contained
make publish VERSION=1.2.0 SELF_CONTAINED=false
# Publish to a custom output folder
make publish VERSION=1.2.0 PUBLISH_DIR=publish/1.2.0A portable .exe build is published on the project's Releases page — download the portable executable and run it directly on any Windows PC without installation. The portable release does not require the .NET SDK to be installed.
If you prefer to build from source, use the .NET SDK and your preferred IDE (Visual Studio, Rider) to build the RdpManager project.
Bug reports and pull requests are welcome. Open issues for feature requests or UI suggestions.
See repository for license information.