Multiple Computer Remote Control

This is a program I wrote in the Summer of 2009 while working for the Steilacoom Historical School District.  The purpose of this program was to speed up the process of installing Windows Updates (before we had a WSUS Server), or to install a program on a computer lab that required interaction.  The program was successful (with a few minor drawbacks), and reduced the time it took to install updates or programs by about 75% (from 4-6 hours, to just over an hour).

Background:

Often, summertime is when we update computers.  In 2009, in order to update a computer lab, I had two options:

  • Go around to each computer and manually run windows update, or
  • Create a new Symantec Ghost image, and ghost the entire computer lab

Running windows update manually on each computer took more work, but it was faster, even though I could only run it on about 6 computers at a time before the bandwidth capped out for the ~700 MB of updates. Building a new image involved less work, but took more time since afterwards, each computer had to be renamed and re-joined to the domain.

I wondered what would happen if…I could get the windows update running on all of the computers at the EXACT same time.  I thought they would all get a portion of the bandwidth, but it would be a lot slower.  Turns out, I was both wrong and right.  They all got some bandwidth, but all the computers were downloading at the same speed as the original 6 were.

Features:

  • Cross-platform
  • Number of possible connected computers limited only by hardware
  • Full-sized, scroll-able (if needed) preview
  • Small program size
  • Windows:  System tray icon to easily see if running
  • Command-line argument for server location

Drawbacks: (due to lack of time to fix / implement changes)

  • If one client disconnects, they all disconnect
  • Occasionally, single-click sent twice (mouse-down + mouse-release, and mouse-clicked)
  • Preview powered by screenshots, not native graphic updates (more bandwidth)
    • However, preview only updates on mouse movement or keystrokes
  • No way to determine if all windows are aligned properly, must visually look at each computer to make sure all windows are in the same location

Files:

RCClient – Code used for the client
RCServer – Code used for the server

System Tray Icon

Image used for system tray icon in Windows.