Windows 7 introduces a feature known as Windows XP Mode, which is reliant on the latest version of their virtualization software: Windows Virtual PC. The older Microsoft Virtual PC 2007 is unable to run when Windows Virtual PC is installed, and vice versa. But what if you need to run both? Microsoft says it's impossible, but I will prove otherwise.
Reasons for needing both
Why would you need both? There are several scenarios I can think of:
- You want Windows XP Mode but you also need to run Windows 98 in a virtual machine. (Windows Virtual PC runs Windows 98 very poorly.)
- Your employees are accustomed to Virtual PC 2007, but you also want Windows XP Mode to work.
- You just want to do something that Microsoft says is impossible.
Installation procedure
Please follow the below procedure to install both products. Note that this only works on Windows 7, since Windows Virtual PC and Windows XP Mode are not supported on any previous versions of Windows.
- 1. Install Microsoft Virtual PC 2007, ignoring compatibility warnings.
- 2. Copy the folder
C:\Program Files\Microsoft Virtual PC
to your desktop. - 3. Install Windows Virtual PC and XP Mode.
- 4. Uninstall Microsoft Virtual PC 2007.
- 5. Copy the
Microsoft Virtual PC
folder back into Program Files. - 6. Apply tweaks from the VPC2007Workaround.zip file below.
Easy fix
The below ZIP file contains everything you need to get Microsoft Virtual PC 2007 and Windows
Virtual PC living together happily on the same machine. The contents are a file named
Virtual PC.exe
, as well as some registry files.
Navigate to C:\Program Files\Microsoft Virtual PC
. Rename Virtual PC.exe
to Virtual PC.bin
. Then, copy Virtual PC.exe
from the ZIP file into
the folder.
Be sure to rename the old Virtual PC.exe to Virtual PC.bin,
since the included Virtual PC.exe is just a launcher!
Open the vpc-license.reg
file with Notepad. On the last line of the file, replace
the string "AAAAA-BBB-CCCCCCC-DDDDD" with your Windows product ID, which can be found by
right-clicking My Computer and clicking Properties. Then, save the file and double-click on
it to add the information to the registry. Be sure to enter your real product ID
before double-clicking on the file!
Finally, double-click on vpc-shell.reg
to add shell associations to the registry. Once this
is done, you should be good to go! Please read the Limitations below
first, however.
Download file: VPC2007Workaround.zip
Detailed information
Sadly, Microsoft Virtual PC 2007 doesn't "just work" when installed. It needs to be coaxed into running in an unsupported configuration, but once you do this, it runs very well. The above ZIP file is all you really need; however, the below information can be useful for the more technically-minded among you who want to know exactly what is going on.
Additionally, when you uninstall Microsoft Virtual PC, file associations and licensing information is removed. Fixes for both of these are included in the VPC2007Workaround.zip file above.
Hard block
Uh-oh! Microsoft has "hard-blocked" Microsoft Virtual PC 2007 on Windows 7, preventing you
from running it. This is attached to the signature of the Virtual PC.exe
file
of Virtual PC 2007. To get around this, I renamed the file to Virtual PC.bin
and made a simple program with the name Virtual PC.exe that launches it. Command-line arguments
are passed to it as well, so you can continue to use shell associations.
Licensing information
When you launch Microsoft Virtual PC 2007, you will get an error about licensing information. To fix it manually, create a new file named "vpc-license.reg" and paste the following code into it:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Virtual PC]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Virtual PC\5.0]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Virtual PC\5.0\Registration]
"PID"="AAAAA-BBB-CCCCCCC-DDDDD"
Replace AAAAA-BBB-CCCCCCC-DDDDD
with your product ID, which can be found
by right-clicking My Computer and clicking Properties. (This is NOT the same as your Windows
product key.) Save the file and double-click it to
add the information to the registry.
File associations
.vmc files for virtual machines will need to be associated with Virtual PC.exe if you want the ability to double-click on the file. The "vpc-shell.reg" file contains the required information.
What works?
Everything that I've tested so far – network, drag and drop, virtualization. Both products run quite well together; please note the limitations below though.
Limitations
You cannot run both Windows Virtual PC and Microsoft Virtual PC 2007 simultaneously. This means that you cannot have a Windows XP Mode application running while you fire up Windows 98. It's slightly inconvenient, but oh well... sure beats not being able to run Windows XP Mode at all.
The above fix takes care of this by detecting if Windows Virtual PC is running, and giving you the option to close it.
Conclusion
I hope this has saved you some hair-pulling, swearing at your computer, and disappointment. Please tell me how this worked for you in the comments. I'd like to hear your experiences!
Comments (19)
Would you mind posting your source code? I'd love to see how it's done.
If you don't have the virtual machine monitor driver installed, you'll just get a big fat error message when running Virtual PC 2007. And if you have it installed the proper way, Windows Virtual PC will refuse to start. I'm still working on a way to manually install the vmm.sys driver without all this hackery.
My .exe file is actually very straightforward -- it just launches the Virtual PC.bin file and passes any command-line arguments to it. A "fancier" feature looks for the existence of vpc.exe in the list of running processes and prompts the user to kill it if necessary. I also had to use Resource Hacker to update the icons in the file since Visual Studio doesn't let me specify resource IDs for the icons. If you still want the (ugly and hackish) code, I'll email it to you -- just shoot me an email on my contact page.
I have been unsuccessful in extracting the necessary files... vmm.sys is the main file but I can't get it to load satisfactorily otherwise.
I have never had the CE emulator installed.
XP mode and Windows Virtual PC checks only if Microsoft Virtual PC 2007 is installed on your PC, (Control Panel -> Installed programs). Removing it from there fixes the issue.
Fire up REGEDIT and navigate to "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" find the right key for your "Microsoft Virtual PC 2007 (SP1)" and delete the key. This will remove it from the list of installed applications. Thats all
worked.
And thanks, @milan.dindos . That makes sense, and it's definitely a better solution than the "frankinstall" method outlined in the article :P
Finally, the workaround (the .exe file at least) might come in useful for its ability to detect if Windows Virtual PC is running and kill it if necessary.
I guess you learn something new every day...
Thanks Milan for the tip regarding the registry. However, deleting the registry key you specified did NOT work on my system (Win 7 SP1 64-bit), I still was unable to run XP Mode.
But you got me thinking about other possible registry keys, and when I deleted the following registry key I was indeed able to run XP Mode:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\899384DAA9E2504438FFE6 05A34FC9BB]
Your exact key name may be different, so I suggest you go to [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products
and search for "PC 2007" in order to find the exact key name.
Now I am able to run XP Mode with no problems. The only downside to deleting the registry key that I mentioned is that VPC 2007 is no longer in the program list, and so cannot be easily uninstalled.
Actually, now I see that while I can run XP Mode, I still cannot run Virtual PC 2007, I get a message regarding program compatibility. I had first installed VPC 2007 and it worked fine, so it appears that the installation of XP Mode or Win VPC is blocking it. Tomorrow I will try the renaming & using the .bin file method that's mentioned here.
-Michael
Today I tried the renaming & .bin file method, and now Virtual PC 2007 SP1 works as well as XP Mode.
So to summarize, here's what I did (on my Windows 7 SP1 64-bit machine):
-installed Virtual PC 2007 SP1 64-bit installation, verified that it worked.
-installed XP Mode
-installed Windows Virtual PC
-noticed that XP Mode will not work and that VPC 2007 will not work, they are blocking each other.
-deleted registry key:[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\899384DAA9E2504438FF E6 05A34FC9BB]
(again, your exact key name may be different, so I suggest you go to [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products
and search for "PC 2007" in order to find the exact key name.)
-now XP Mode works fine
-using the file VPC2007Workaround.zip provided here by Nookkin, I renamed VPC 2007's Virtual PC.exe to Virtual PC.bin, and placed there the Virtual PC.exe file provided by Nookkin.
-now both VPC 2007 and XP Mode work.
With this method, it is not neccessary to use the registry files that Nookkin provided, or deal with the vmm.sys issue (since I did not uninstall VPC 2007)
As mentioned above, it is not possible to have both VPC 2007 and XP Mode running at the same time. If I have XP Mode running and then try to start VPC 2007, it will give an error message. If VPC 2007 is running and then I try to start XP Mode, Windows will freeze for a few seconds and then I get a BSOD (Blue Screen of Death - ouch!)
If I have XP Mode running and then close it, I must wait about 15 seconds until I can start VPC 2007, otherwise I get an error message.
Many thanks to Milan for providing the registry idea. A big thanks to Nookkin for providing the zip file, as well as for the explanation he provided here which enabled me to arrive at what seems to be an improved solution to this issue. My method essentially uses elements from both Nookkin and Milan's solutions.
-Michael
Thanks for your feedback! I'll be upgrading at least one of my machines to 64-bit Windows and I wouldn't be able to get this to work without the input I've received from the comments.
I apologize for not being accurate in describing that.
-Michael
Thank you so much for this...you literally just made my computing life -this- much better ;)
I wanted to clear up a few things. Here's exactly what I did (on Windows 7 Ultimate, 32-bit) in order:
a. Install the CE emulator, as mentioned above. Do this FIRST. I learned that the hard way.
b. Install VPC 2007.
c. Copy the VPC folder to the Desktop.
d. Install VPC (newer) and XP Mode.
e. Uninstall VPC 2007.
f. Follow the instructions provided already (be sure to enable file extensions to display, so you can change the extension, not just add .BIN to the filename itself).
e. Bingo!
I know it's kind of a pain. I'm not sure if the exact same procedure applies to 64-bit Windows 7 (and even with different versions of 7), but this is what worked for me, so I wanted to throw this out there.
Thanks, nookkin and everyone else! I definitely appreciate this once again :) MS really should rethink their new VPC product, it sucks!
64-bit laptop and it works like a charm running a Windows XP .vpc that would not run with Windows Virtual PC.
I had to get this to work because the proprietary programs that I have aren't supported any more.
I didn't uninstall Windows Virtual Machine or XP mode. I didn't reinstall XP mode. I didn't move around any .SYS files.
I installed the Virtual PC 2007 not into DIR "Microsoft Virtual PC", but into "Microsoft Virtual PC 2007" and changed the vpc-shell.reg file in the FIX to reflect that change, just in case.
Additionally I had to delete this exat key mentioned above in the notes to make Windows Virtual PC with XP mode work:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\899384DAA9E2504438FFE60 5A34FC9BB
Finally, When I tested my Windows XP .vpc, I had to turn off Hardware Virtualization. When I opened the image with Windows XP with Virtualization ON, the virtual machine got stuck starting (black screen).
Thank you again.
Leave a comment