From time to time people have asked me how to install Virtual Server on Windows 7, and have even pointed me towards attempts made by other people with varying levels of success. But I have not looked into this until today – because it is unsupported.
Let me state that again – to be crystal clear – running Virtual Server on Windows 7 is not supported. If you try to do this and things do not work for you – do not contact me or Microsoft – as the answer will simply be that it is not supported and that you should not do that.
If you need a server virtualization solution Microsoft recommends that you use Hyper-V in Windows Server 2008 R2. If this is not an option for you (most commonly this is because your computer does not support hardware virtualization) then you can run Virtual Server in a supported fashion by doing so on Windows Server 2008.
But why am I talking about how to do this today? Well – I needed to do so for the purposes of a demo that I am working on. I am setting up a demo that I want to run on a single computer, that needs to have some server infrastructure running in the background. Ordinarily I would just setup the servers inside Virtual PC – but in this case the demo is centered around Virtual PC – and I do not want to have a bunch of server virtual machines cluttering up my demo (petty – I know).
What is the deal with running Virtual Server 2005 R2 SP1 on Windows 7 anyway? Well – if you just try to download and install Virtual Server on Windows 7 you will be presented with the following dialog:
The reason why this dialog is presented is because Microsoft has explicitly decided to not support, or test, Virtual Server on Windows 7. Have I mentioned that this is not supported? Just to reiterate – this is not supported. As Virtual Server includes kernel mode drivers – the fact that they are untested and unsupported could be potentially catastrophic for your computer.
Because of this the Windows 7 application compatibility engine detects that you are trying to install Virtual Server and stops you. At this point you have two options (apart from the obvious one of not running Virtual Server on Windows 7):
- Try to trick the application compatibility engine into not recognizing Virtual Server
- Just turn the application compatibility engine off
The problem with trying to trick the application compatibility engine is that it usually involves renaming files / messing with the registry in ways that may potentially break Virtual Server anyway (thus defeating the point of the whole exercise). The problem with turning of the application compatibility engine is that you may encounter problems with other applications as a result.
Since I am only running a limited set of applications in my demo environment, I felt more comfortable with the second option. To turn off the application compatibility engine you need to:
- Run GPEdit.msc
- This should open the Local Group Policy Editor
- In the tree (on the left) select Local Computer Policy then Computer Configuration, Administrative Templates, Windows Components and finally Application Compatibility
- Locate the entry for Turn off Application Compatibility Engine and double click on it
- Select the Enabled radio button and then click OK
- Next locate the entry for Turn off Program Compatibility Assistant and double click on it
- Select the Enabled radio button and then click OK
You should now have something that looks like this:
Now you will need to reboot your computer (forcing a group policy update is not enough in this case).
Before moving on I would like to quickly discuss exactly what the impact of these policy changes are:
- Disabling the Program Compatibility Assistant means that Windows will no longer tell you when you are about to run a program with known compatibility problems. It will just sit by quietly and let you try (and most likely fail).
- Disabling the Application Compatibility Engine means that Windows will no longer try to correct known compatibility issues. This means that there may be programs that were working before that start failing – because Windows is no longer fixing things up for them.
So the summary is that you should really only do this if you are running a limited set of applications and can confirm that they all can run with the application compatibility engine disabled.
Once the computer has rebooted you should be able to run the Virtual Server installer with no problems:
Once you have done this you will want to install the Virtual Server 2005 R2 SP1 update. This package added official support for running Virtual Server on Windows Vista and Windows Server 2008 – and solves a number of compatibility issues that you will encounter on Windows 7 without this update. Installing the update is a little tricky – as it is shipped as a .MSP file that will fail to install if you just double click on it. Instead what you need to do is to open an administrative command prompt and run to following command:
msiexec /update KB956124.msp
You should now be ready to go with Virtual Server. However, there are some potential issues with this configuration:
- A number of people have contacted me with reports that SCSI disks do not work with Virtual Server when running on top of Windows 7. I have not seen this problem myself (SCSI disks are working fine for me) so I do not know what is happening here.
- There have been a number of reports that Virtual Server fails to set file permissions correctly on Windows 7. I have seen this problem myself – but have yet to suffer any ill side effects (apart from an annoying event log entry about it).
Finally – here are the latest links to the Virtual Server bits if you are going to try this out yourself:
- Virtual Server 2005 R2 SP1 installer: http://www.microsoft.com/downloads/details.aspx?familyid=bc49c7c8-4840-4e67-8dc4-1e6e218acce4
- Virtual Server 2005 R2 SP1 update: http://www.microsoft.com/downloads/details.aspx?FamilyID=886876b7-e17c-4429-85da-f623506c5f2c