Thoughts on the World

Windows Virtual PC - Breaking Compatibility

Having for years been an exemplar of how to maintain compatibility between software versions, Microsoft have recently suffered some horrible aberrations in this area. Setting aside the user interface horrors of Office 2007, my worst recent challenge has been Microsoft's Virtual PC technology.

Windows 7 introduces a new version of this technology, known as Windows Virtual PC (VPC for short). This has a couple of great advantages over the previous version, Virtual PC 2007: USB support and very good desktop integration with Windows 7. It's the default way to handle legacy programs and devices in Windows 7. In fact, Microsoft have a web page which includes a large table trumpeting all the benefits:

Features

Microsoft Virtual PC 2007

Windows Virtual PC

Integration with Windows XP Mode

 

USB support

 

Seamless application publishing and launching

 

Support for multi threads

 

Clipboard sharing

 

Printer redirection

 

Smart card redirection

 

Drive sharing

 

Integration with Windows Explorer

 

Known folder integration between host and guest

 

Support for higher resolutions

 

Requires AMD-V or Intel-VT CPU feature

 

However, there's a dirty little secret - Microsoft have badly broken backward compatibility with this new version, and lost several key features of VPC 2007. The table should really have at least four more rows:

Features

Microsoft Virtual PC 2007

Windows Virtual PC

Can share virtual machines with other PCs running older versions of windows

 

Fully supports CD drive e.g. for CD ripping

 

Console program to manage VMs

 

Compatible with 3rd party program launchers

 

Several of these were real deal-breakers for me, as I regularly move virtual machines (VMs) between hosts, and have to do my CD ripping in an XP SP1 VM since an earlier Microsoft act of compatibility breaking (when XP SP2 changed WMA format so that it's incompatible with many MP3 players, including the one in my one year old car!).

On the other hand, I really need USB support for a particular device which doesn't have Windows 7 drivers.
The ideal would be side by side installation of VPC and Virtual PC 2007, but this doesn't work as Virtual PC 2007 just won't run if VPC is installed. Worse, running up an old VM in the new version upgrades the virtual machine additions so that that VM then blue-screens on other hosts.

After a couple of weeks mulling this dilemma, I have found a solution, but ironically it has driven me to Microsoft's competition when I've previously been a loyal supporter...

So I now have a Windows 7 machine running Virtual PC 2007, for my older and shared VMs, and VMware Player, for my "XP Mode" VM.

Aside from the slight ridiculousness of running two different workstation virtualisation technologies, this is almost ideal: Virtual PC 2007 delivers all the features I've exploited on other hosts, while VMware Player, also free to download and use, is a good alternative to Windows VPC, but one which has no problem existing side by side with Virtual PC. If anything, it has much better network and USB support. The only loss is the ability to run VM applications integrated into the host desktop, but in my case this is no significant hardship (although, as they say, your mileage may vary). I could, perhaps, move to VMware alone, but that entails more effort to update my other VMs than I want to take immediately.

Migrating the XP Mode VM

If you're happy to set up a new Windows XP VM, the above solution is very easy, but I wanted to re-use my existing "XP mode" VM, mainly because I'd already activated key software in it. I've seen the statement elsewhere that this is impossible, but I can confirm that as long as you have access to an XP install source (ideally with SP3) and product key, e.g. through MSDN, it's not that difficult. Here's the process I followed:

  1. In the original XP Mode VM (while Windows VPC is still installed), uninstall the virtual machine additions, then shut down the VM.
  2. Take a copy of the VHD file.
  3. Uninstall the "Windows Virtual PC" update, and reboot the PC.
  4. Install Virtual PC 2007, and reboot.
  5. Create a new Virtual PC, using the copy of the XP Mode VM as primary disk.
  6. Boot this VM from your Windows XP install source, and "repair" the Windows installation on the VHD. This will reset the hardware abstraction layer and, even more importantly, reset the product ID so you can re-activate Windows. (This is required by Microsoft so that people don't just hijack the XP Mode VM as a free copy of Windows XP).
  7. Run up the VM and install the Virtual PC 2007 VM additions.

At this point, you have an XP mode VM which will run under Virtual PC 2007. If you need to run it under VMware (e.g. to get USB support) then you'll need to take further steps:

  1. In the XP mode VM do a full backup to an external location. The best way is to add a second, blank, VHD and back up to there. Ntbackup is fine.
  2. Shut down the VM. Create a new VM and install a fresh copy of Windows XP. This is necessary as the existing VM using the original VHD file can't be converted by the VMware tools.
  3. Attach the backup source to the new VM, start it and restore the backup. When complete reboot a couple of times to get the VM stable.
  4. Download and install both VMware Player and the VMware vCenter Convertor.
  5. Use the vCenter Convertor to convert your new XP mode VM to a VMware one.
  6. Start VMware Player, add your new VM and start it.
  7. The old Microsoft VM additions will be uninstalled automatically, but you'll need to add the VMware equivalent (VMware Tools). You may also need to tweak devices and so on, but basically this will give you an "XP Mode" with full USB support but capable of running alongside Virtual PC 2007.

It would be good if in future Microsoft paid more attention to compatibility, but it's good to know that there's a way to work around these particular limitations.

Addendum - Three Weeks Later

Having been a fan of Microsoft Virtual PC for years, this business could easily make me a complete convert to VMware. A couple of years ago I converted a client's "standard desktop" to a Virtual PC VM. This worked, but was never really adequately reliable, with around two out of three sessions crashing with BSOD errors related to MRXSMB.SYS. Despite several attempts I never managed to fix this, or get to the bottom of the cause.

After adopting VMware successfully for my "XP Mode" VM, I turned my attention to the "standard desktop" VM and converted it with the vCenter Convertor. The conversion was very easy, and automatically managed the change to the devices and the VM additions / tools. I did have to re-activate Windows, because the changes to the "virtual hardware" obviously exceeded some threshold, but otherwise it was pretty much hands off.

Since that conversion the VMware version has been absolutely rock solid. No BSODs, and after a bit of experimentation with the network adapter settings all apps seem to be running very smoothly. It feels a bit quicker (although that could just be down to the reduced frustration), and the disk compaction tools have reduced to size of the virtual disk file down well below my starting point.

2-0 to VMware so far...

Comments

2 Responses to Windows Virtual PC – Breaking Compatibility

nauf on 17 January 2011 at 12:18

January 17th 2010

I have been running XP-Mode in Virtual PC inside Windows 7 for a while. My original opinion is that it was fast and amazingly integrated, especially running standalone apps inside the VM (it still takes a while to fully open the application though)

However, I recently had the following problem: I had to run FreeOTFE to mount an encrypted file. FreeOTFE does not currently run in Windows 7 64-bit without some hassle (due to driver signing) so I needed Windows XP inside Virtual PC to be able to use FreeOTFE (I know…… I also use Truecrypt; and I know that Truecrypt runs perfectly well in W7 64-bit but there were some important reasons for me to stick to FreeOTFE in this particular case).

FreeOTFE obviously installed without issues in XP inside Virtual PC but to my surprise failed to open the encrypted file. So I decided to try VMWare Player 3.xx and glad I did. Not only FreeOTFE runs perfectly in XP inside VMWare Player but the whole OS seems to be faster (might be just my appreciation).

Note that I am not stating that one is better than the other, just that in this case VMWare did the job very well. Sincerely, I am considering buying Workstation in the future.


Anthony on 1 June 2013 at 20:57

Thanks Andrew!
It really helped me to sort out issues related to my MS Virtual PC 2007 virtual machines and USB port issues. Googled a lot and could not find anything useful, except suggestions to migrate Windows 7 WPC. Finally, planning to use VMware converter along with VMware player to achieve USB port access in Guest VMs…


If you'd like to comment on this article, with ideas, examples, or just to praise it to the skies then I'd love to hear from you.

Comment on this article

Please share: All Addthis servicesTweet thisFacebook thisLink thisYam thisShare on Google