Accessing legacy operating systems remotely via Virtual Box

In the process of moving forward to Windows 7 we found, that there were still some computers running Windows 2000. The original plan was to get rid of them in the process because they are (and have been for some time) an uncalculable security risk and of course the hardware is quite old as well (and don’t even ask for the backups). Unfortunately it turned out that there are some programs running on these computers that we still haven’t replaced or at least are not 100% sure the replacement works reliably.

So we decided to keep these computers as virtual machines without network connection (actually: With host only networking). And since one of the programs was a client server application, this added some additional headache: How do you use a 3 user c/s application if the computer running the server does not have a network? It turned out, that this particular application was rarely used and it would be fine if every one of these 3 users could work with it one at a time and on the console of the virtual machine.

Being a lazy bastard ™ I of course didn’t want to walk to the console every time and I don’t think the other users were particularly fond of that idea either, I investigated a little bit further and found a nifty little feature of VirtualBox called "Remote Display". It allows you to access the virtual machine using a Remote Desktop Client, so it adds remote access to any legacy operating system that runs in the VM.

Getting it to work turned out to be less straight forward than I thought. First, you need the “Oracle VM Virtual Box Extension Pack” in a version that matches that of VirtualBox. It is installed via the the VirtualBox settings (File / Preferences) under “Extensions”. Note, that installing from a network drive apparently does not work.

After this is done you configure the Remote Display for the virtual machines that require it. This is done in the virtual machine’s settings under “Display”. Switch to the “Remote Display” tab set the check to “Enable Server” and – very important – set the Server Port to something else but 3389. If you leave it with the default, it will conflict with the remote desktop capability of Windows and you will get the rather unhelpful error “Your computer could not connect to another console session on the remote computer because you already have a console session in progress.” when you try to connect locally. I used port 3400.

To be able to connect to the virtual machine that machine must already be running but it is not necessary that the OS has finished booting. Just open the Remote Desktop Client and point it to the name or IP address of the host computer followed by a colon (":") and the port number. E.g. localhost:3400, or bobscomputer:3400. After complaining multiple times about security the window should show you the same as the console window of VirtualBox.

If you want to run VirtualBox without a GUI and access it only via Remote Desktop, see this StackOverflow question.