WebEx and GoToMeeting cost $$. Teamviewer is free, but only for personal use….

How would you like a dynamically compiled single-click VNC, with no GUI, using a repeater, for free?

First off, let’s answer some questions… What is single-click? What is a repeater?

UltraVNC Single-Click is a mini UltraVNC Server that can be customized and preconfigured for download by a Customer. UltraVNC SC does not require installation and does not make use of the registry. The customer only have to download the little executable and Click to make a connection. The connection is initiated by the server, to allow easy access thru customers firewall.

Hmm, ok, and the repeater?

Basically allows you to bypass firewalls using a preconfigured server.

Rather than trying to explain it. I’ll give you an example. Lets say your name is John Doe.

Client calls you up, needing computer help / training. You tell them sure, please visit my website. Give them the url to your support page. They are prompted for a session key. They enter the session key, and click ok. Your server compiles an executable with the session key, YOUR name and the ip of YOUR repeater (if you have more than one). Meanwhile, you visit a similar page, for the host (password protected of course). You enter the same session key. The host executeable is compiled and downloaded to your computer. You run it, it connects to the repeater with the session key, and waits for the client to connect. The client runs the executable they’re given, it says “Waiting for John Doe …”, the connection establishes to the same repeater, and now you can see their desktop. Depending on your permission, you may even be able to interact with them.

While this is all happening, you could have 2 or 3 or 10 other like scenarios going on at the same time. Without having to build the helpdesk.txt file, without having to map ports to computers, without users having to be at specific computer with ports mapped and software installed.

And yes, I did mention permissions. Depending on your configuration, Bob from level one technical support may only be able to view a clients desktop, but Fred from level two may be able to interact. Keeps your liability down.

FYI- My files below are setup to disable Aero and UAC on Vista/7, and re-enable after the session ends. It’s also set up for low bandwidth use.

Here are the steps to getting things set up: (I’ll provide the files so you don’t have to do much.)

  1. Set up a repeater – download
    The repeater can be ran as an application, or a system service. I have found it’s more reliable running as an application, but this does require a logon session to remain in memory. Run on any windows OS. Configure the ports.

  2. Build the client executable – download my files below
    Take the standard VNC single-click executable. Run it through ResHacker, and make it look like this.

  3. Set up client configs – download my files below
    Config.txt is for 7zip to know how to package and execute your executable. Helpdesk.txt needs to have some variables in it, that your other scripts will replace with the actual data, such as the ip and technicianss name. This is how the client executable knows how to connect and what to say.
  4. Set up host config – download my files below
    Config.txt holds the information such as low bandwidth, permissions, etc.
    RunProgram=”vncviewer.exe -autoreconnect 5 $RESTRICTED -noauto -64colors -encoding tight -proxy $IP::$PORT ID:$ID”The variables in caps are replaced by values during compilation time. The restriction level, the ip, port, and session key / id.
  5. Set up client script – download my files below in ASP.NET 2
    Build an asp or php page to compile the executable for the client. This script will need execute access on your web server. It will replace the variables in the text files with actual data. Compress all the files needed into one executable, push that file to the browser, then delete any temp files leftover on the server.
  6. Set up host script – download my files below in ASP.NET 2
    This will be a lot like the script above. It will compile the host executable in a similar fashion. Here, you can set up which session keys, belong to which users, and what permissions they have.


  • Try using port 80 for your clients. This may allow them to utilize remote assistance, if their firewalls are severely locked down. I went with the default ports myself, though I may change that if I run into problems with clients being unable to connect.
  • The host can save his executable as long as his session key doesn’t need to be changed. This will allow him to connect quicker to the repeater. Which by the way, will timeout after 5 minutes if no client connects.
  • You’ll notice my asp.net scripts allow the use of the query string. This allows shortcuts to be made to skip having to enter the session key. Just click the shortcut, and run the exe.
  • The host has the ability to create a shortcut. It will ask them where they want to save it (desktop), then future sessions, they can just click the shortcut.

Here are the things I plan on implementing:

  • Allowing users to have more than one session key, so they may connect to multiple clients at the same time.

I realize this seems complicated, and its easier to just use other software out there, but hey… It’s free, and it works.

Download the files: (the web scripts are in ASP.NET 2)

  • Client Files – Place in a folder on the webserver as is. (\bin\remote-support\client\)
  • Client Script (support.aspx) – Place anywhere on the webserver, give full permission. Edit path inside for client files if different than above, add your technicians.
  • Host Files – Place in a folder on the webserver as is. Lock this folder down! (\bin\remote-support\host\)
  • Host File (support_admin.aspx) – Place anywhere on the webserver, give full permission. Lock this file down! Edit path inside for host files if different than above, add your technicians, adjust a few other things.

We use this setup at work, with a few connections a day, by a few different users.  I also use it personally for friends/family/clients and have found it to be very reliable.

If I missed anything, or you need help, feel free to comment or email me. It should be pretty straight-forward for those of you wishing to tackle this.

Update: My project has been ported to PHP/Linux. Head over to phpremotesupport.com and check it out!

Update: PHPrs is now available for download.  Get it from phpremotesupport.com or download it here.

Update: Added MSRC4 Encryption. Read about it here.