We have thousands of computers connected to http://www.logmein.com/. It is absolutely free, but the paid-for upgrades, like a management dashboard to be able to roll out updates to all your machines, are excellent and pay for themselves over time.
We've found the performance to be excellent - very little hit on the remote machine until you connect to it and even then, the draw is fairly low. We have used it to remotely view full-screen MPEG movies playing in large digital out-of-home displays and to troubleshoot touch-screen apps in supermarkets and shopping malls.
It runs on Windows and Mac and can be controlled from Window, Mac or a smart phone. It is a background service, so does not get in the way of the user but can be configured to ask their permission, etc
I highly recommend it.
If you want to just walk one customer through an issue, consider Adobe Acrobat Connect which uses Adobe Flash on both your and their computers to do full-screen remote viewing. You can do up to three-way viewing with the free version.
Here's a list of some of the other items we use in conjunction with Remote Control to work out what has been going wrong:
- All the software we put onto the remote machines logs activity to C:\Logs or similar, rotating the logs every 28 days. Make sure the logs are named by date and have time stamps for output. When guiding the customer through a problem, note the time (and timezone!).
- An agent service on the remote machines checks that the main application processes are running, not leaking, not hung and not crashed. It restarts bad-behaving processes after sending notification (see below).
- We have agent scripts that can grep these logs for nasty-looking errors and SMTP them to the development team. Obviously, we get Inbox-full pain when we ship buggy code, but its' useful.
- Not all customer environments are happy with automated outgoing SMTP (looks like spamware) so we use a HTTP web service to upload the things we need.
- If bandwidth is good, upload a ZIP of the days logs overnight every night until the machine is healthy.
- If bandwidth is not so good, cherry-pick what you upload, or upload a grep of logs.
- Keep crash dumps (upload if possible) for diagnosis. You need to have excellent release discipline to ensure you have the exact binary for the particular crash.
- If you only have outgoing connections and you need to talk to the remote computers some times, consider using the Hamachi VPN service - it's slow, but free and works.
- Microsoft has a tool named 'collector' which will enumerate all the installed software on a machine, a bit like 'Add/Remove Programs' window. This is invaluable for finding differences between client machines.
- On Windows, you can automate the Windows Installer engine to interrogate what is installed in terms of products, patches, service packs, etc.