Skip to content

Esteban4u/RemoteControl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Remote Control v2.0.0

A Windows desktop application that provides agent-less VNC remote control of Windows machines. It deploys TightVNC Server to a remote machine via WMI, connects with TightVNC Viewer, then cleans everything up on disconnect — no pre-installed agent or VNC software needed on the target machine.

Originally created by Chris Tschantz (RemoteControl v1.6.5, 2012, VB.NET / .NET Framework 3.5). This is a complete ground-up rebuild targeting modern Windows.

Remote Control v2.0.0


Features

  • Agent-less — nothing needs to be pre-installed on the target machine
  • Automatic setup and cleanup — deploys TightVNC Server, connects, then removes all traces on disconnect
  • Active Directory browser — browse and search AD for computers (when domain-joined)
  • Recent hosts list — saves previously connected machines for quick reconnection
  • Unattended mode — pass a hostname as a CLI argument to connect immediately
  • ARM64 support — auto-detects 32/64-bit architecture on the remote machine

Requirements

On the connecting machine

  • Windows 10 or 11
  • .NET 8 Desktop Runtime (or use the self-contained build — see below)
  • Local admin rights on the target machine (C$ admin share + WMI access)

On the target machine

  • Windows 10 or 11
  • C$ admin share accessible
  • WMI accessible
  • Remote Registry service not permanently blocked by Group Policy

Home / Workgroup Machines

By default, Windows home machines block the admin share (C$) and WMI access that RemoteControl needs. Run Prepare-RemoteMachine.ps1 once on each target machine to configure it:

# Open PowerShell as Administrator, then:
Set-ExecutionPolicy Bypass -Scope Process -Force && .\Prepare-RemoteMachine.ps1

The script enables OpenSSH Server, PowerShell Remoting, File & Printer Sharing, WMI, and Remote Registry, and lifts the UAC restriction that blocks admin share access for local accounts.

One additional requirement for workgroup machines: the connecting machine must use an account with the same username and password as a local administrator account on the target machine.


Getting Started

Option 1: Self-contained executable (recommended)

Download the latest RemoteControl.exe from the Releases page — no .NET installation needed on the target machine, just copy and run.

Option 2: Build from source

Prerequisites

  • .NET 8 SDK
  • TightVNC 2.8.87 binaries (see below)

Obtaining TightVNC binaries

The 5 resource files must be placed in src/RemoteControl/Resources/ before building:

File Source
tvnserver64.exe Extracted from tightvnc-2.8.87-gpl-setup-64bit.msi
tvnserver32.exe Extracted from tightvnc-2.8.87-gpl-setup-32bit.msi
tvnviewer.exe Extracted from tightvnc-2.8.87-gpl-setup-64bit.msi
screenhooks64.dll Extracted from tightvnc-2.8.87-gpl-setup-64bit.msi
screenhooks32.dll Extracted from tightvnc-2.8.87-gpl-setup-64bit.msi

Download the GPL MSI installers from tightvnc.com, then extract with an MSI extraction tool (e.g. msiexec /a tightvnc-2.8.87-gpl-setup-64bit.msi /qb TARGETDIR=extracted64). See src/RemoteControl/Resources/README.md for full extraction details.

Build and run

# Build
dotnet build src/RemoteControl.sln

# Run
dotnet run --project src/RemoteControl/RemoteControl.csproj

# Build self-contained single-file executable
dotnet publish src/RemoteControl/RemoteControl.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true

Usage

  1. Launch RemoteControl.exe
  2. Type the hostname or IP address of the target machine and click Connect
  3. The app validates connectivity, deploys TightVNC Server, and opens the viewer
  4. Use the remote desktop as needed
  5. Close the VNC viewer window — the app automatically cleans up the remote machine

Unattended mode:

RemoteControl.exe <hostname>

Options menu:

  • Browse AD — tree view of Active Directory OUs and computers (domain-joined machines only)
  • Prompt User — when enabled, the remote user is prompted to accept or deny the connection
  • Information — about, technical details, release notes, known issues

How It Works

Step Action
1 Validate: DNS → Ping → C$ admin share → WMI connectivity
2 Start Remote Registry service on remote machine
3 Create SoftwareSASGeneration registry key (enables Ctrl+Alt+Del via VNC)
4 Deploy TightVNC Server files to C:\Windows\Temp\RCTEMP on remote machine
5 Configure TightVNC Server via remote registry
6 Install and start TightVNC as a Windows service
7 Add Windows Firewall rule for TCP port 5993
8 Launch TightVNC Viewer and connect
9 On disconnect: remove service, delete registry keys, delete files, remove firewall rule
  • VNC port: 5993 (non-standard, avoids conflicts with standard VNC on 5900)
  • Remote execution: WMI Win32_Process.Create — no agent required
  • Authentication: Disabled by design; access controlled via IP ACL and admin share validation

Project Structure

src/
  RemoteControl.sln
  RemoteControl/
    RemoteControl.csproj
    Program.cs
    Models/
      HostEntry.cs
    Services/
      VncConnectionService.cs      # Main orchestrator
      NetworkService.cs            # DNS, ping, share/WMI checks
      RegistryService.cs           # Remote registry operations
      RemoteExecutionService.cs    # WMI command execution
      ResourceExtractor.cs         # Extracts embedded VNC binaries
      HostStorageService.cs        # JSON host persistence
      EventLogService.cs           # Remote event log entries
      DomainService.cs             # Domain join detection
      InputValidation.cs           # RFC 1123 / RFC 4515 validation
      Logger.cs                    # File logger
    Forms/
      MainForm.cs                  # Main window
      AdBrowserForm.cs             # Active Directory browser
      AdSearchForm.cs              # AD computer search
      ChangeDomainForm.cs          # Domain name dialog
      FilterOptionsForm.cs         # AD filter options
      InformationForm.cs           # About / How it Works / Release Notes
    Resources/
      README.md                    # Instructions for obtaining TightVNC binaries

Known Issues

  • Windows Defender or SmartScreen on the remote machine may flag the TightVNC server executable. In enterprise environments, add an AV exclusion or sign the binary with your organization's code-signing certificate.
  • The C$ admin share must be accessible. On workgroup machines, ensure file and printer sharing is enabled and the connecting user has local admin rights.
  • The Remote Registry service must not be permanently disabled via Group Policy.
  • If the remote machine becomes unreachable during a session, cleanup will be skipped. Reconnecting and doing a clean exit will properly clean up any leftovers.

License

This project is released for use in enterprise/IT environments. TightVNC is licensed under the GNU GPL v2.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages