Virtual PC is a registered trademark of Microsoft Corporation. This website is not associated with Microsoft Corp. in any way.
Introduction Virtual Disks Virtual Machines Formatting Disks OS Installation Virtual Machine Additions Appendix

Microsoft Virtual PC is an application that permits the user to run multiple operating systems at the same time on the same physical computer. Virtual PC lets you create separate virtual machines on your Windows desktop, each of which virtualizes the hardware of a complete physical computer. You can run operating systems such as MS-DOS, Windows, and OS/2 within these virtual machines. You can use virtual machines to run legacy applications or increase security during certain activities. You can easily switch between virtual machines with a mouse click.

Three virtual machines booting up inside a Windows XP host
Virtual PC is not just another way to multiboot, in the commonly understood sense. The term "multibooting" usually means to install multiple operating systems on a single computer, but only one operating system will be booted at a time. Each operating system is running on the same hardware (but not at the same time), and that hardware is real--it's your real computer. In contrast, what Virtual PC does would more appropriately be called "simultaneous booting". Your computer (the "host" machine) boots the main operating system, and the other operating systems are booted in virtual machines (the "guests") that run within the host machine. One or more guests may be booted and run simultaneously with the host.

What is a Virtual Machine?

As its name suggests, a "virtual" machine is not real. It is a fictitous machine with fake hardware and a fake hard disk. Operating systems installed in a virtual machine do not run on your real hardware! Much of the so-called "hardware" of a virtual machine is emulated -- software that behaves like some specific piece of hardware. When you install an operating system on a virtual machine and that OS tries to communicate with the hardware, Virtual PC intercepts the communication and responds just as real hardware would. For instance, the virtual machines emulate a motherboard with an Intel 440BX chipset, so the OS will think it is running on an Intel 440BX, regardless of what chipset your motherboard really uses.

To interface with the outside world, Virtual PC will pass input-output data to the host machine's keyboard, mouse, and video display. The virtual machine only sees the emulated hardware, though. For example, the host machine may have a USB mouse, but the mouse emulated inside a virtual machine is a PS/2 mouse. Moving the host's USB mouse moves the virtual machine's PS/2 mouse.

A virtual machine uses a virtual hard disk. Likewise, a virtual hard disk is not real. It is actually a file that Virtual PC translates and presents to the virtual machine just like it was a real hard disk. You can partition and format this hard disk, just like a real hard disk. (Of course, you must do this from within the virtual machine -- from the host machine the virtual hard disk just looks like a very big file!)

How Do I Use Virtual PC?

The first step is to install the Virtual PC application on your host machine. Then you'll create virtual machines and virtual disks, and install an operating system on each virtual machine's virtual hard disk.

This document is not a reference resource, but is an introduction to setting up virtual machines in Virtual PC. The following sections are designed to give you a feel for how Virtual PC is used.

Install Virtual PC

Virtual PC 2004 runs on Windows 2000 Professional SP4, Windows XP Professional or later. The operating systems that can be run in a virtual machine include DOS and all versions of Windows through XP. Other operating systems may also work, though not officially supported by Microsoft.

Microsoft Virtual PC 2004 is now available for free. Download Microsoft Virtual PC 2004 SP1 from this link. The download is an 18 MB file in zip format. Extract the contents of the zip file to a temporary directory, then run setup.exe from that directory. The actual installation is quick and straightforward.

Now for an "Unreal" Example

In the following sections, I'll present some screenshots to illustrate how a virtual machine can be setup. In the example shown here, I'll install Windows 98. Why Windows 98? No particular reason, except that this copy happens to be an upgrade version, so it introduces the complication of having to swap in other disks to satisfy the upgrade restriction.

Each virtual machine includes a virtual CD drive and virtual floppy drive. These virtual drives can be used two different ways. They can either be loaded with an image file of a CD/floppy, or they can be linked to the host machine's real CD/floppy drive so a real CD/floppy disk can be used. In my case, I already have backup images of the Win3.1 floppy disks and Win98 CD, so I'm going to use these.

Now here's the cool part: I'm going to install Windows 98 on a virtual hard disk in a virtual machine, using a virtual DOS boot floppy, virtual Win98 CD, and satisfying the upgrade check with virtual Win3.1 floppies. Unreal !!

Create a Virtual Hard Disk

A "virtual hard disk" (vhd) is a file somewhere on your real hard disk. It can be placed on any accessible partition on your real hard disk. The virtual machine will pretend this file is a complete hard disk in itself. This step can be completed while creating a virtual machine, but I am presenting it as a separate step to reinforce the point that it is a separate operation and need not be done through the virtual machine wizard.

Create a Virtual Machine

A "virtual machine" (vm) is a file somewhere on your real hard disk. The Microsoft Virtual PC application will pretend this is a complete personal computer in itself. The virtual machine includes a virtual display adapter, a virtual floppy drive, and a virtual CD drive. You can attach one or more virtual hard disks to this virtual machine. This section illustrates how to create a virtual machine.

Partition and Format the Virtual Hard Disk

Just like a real hard disk, the virtual hard disk must be partitioned and formatted with a file system before an operating system can be installed on it. In order to do this, you must access the virtual hard disk through a virtual machine. This section illustrates how this task is similar to working with a real hard disk.

Install Windows on the Virtual Machine

Installing an operating system on a virtual machine can be accomplished just like installing on real hardware. This section illustrates how similar the procedure is.

Install Virtual Machine Additions

After Windows is installed, Virtual Machine Additions can be installed. VMA is optional, but provides a couple useful features.

What Are Some Advantages of Virtual Machines?

The emulated hardware of a virtual machine is the same regardless of what host PC is being used. That means you can conveniently debug and customize a vm on one host, then easily transfer the vm to any other computer running Virtual PC. (Note: the CPU is not emulated, so you may have trouble migrating a vm to another host machine if the CPUs are too different.)

With the "save state" option, you can hibernate the vm instead of completely shutting it down. That way, you can reactivate a vm without going through the lengthy bootup process.

With the "undo disks" option, you can discard all changes to the vm when you close a session. That way, you can have the vm start up exactly the same as it did the previous time.

Use a vm to test new software before committing it to your host machine. If you decide not to keep it, you won't have to worry about it leaving behind files or things in your registry.

Use duplicate vms to provide identical platforms to directly compare competing software products. (See here for an example.)

The network adapter in a vm gets a different IP address than the host, so you can connect both guest and host to a home network. Setup and test a firewall or webserver without having to use another computer.

Use a vm for web browsing and email activities. Any viruses, worms, trojans, or other malware will be confined to the vm and won't be able to infect your host machine. (If you use host-shared folders, just be careful you don't transfer problems from guest to host that way.)

In fact, while putting together this webpage, I accidentally mistyped a URL while using Internet Explorer inside one of the guest machines. You guessed it -- my browser was hijacked to one of those porn sites, the kind that keep popping up other windows when you try to close the browser. How fun it was to just shut down the virtual machine and tell it to discard the session changes!

How Well Does It Work?

Okay, it's not perfect. There is a speed penalty, but that's to be expected. Operating systems in a standard multiboot system run at full speed, but there you're running only one at a time. Being able to run multiple operating systems simultaneously can have its advantages, so sometimes giving up a little speed may be worth the tradeoff.

I also notice an occasional stutter in the mouse or keyboard response. I'll be typing away, and suddenly the on-screen display will pause, then catch up. Things work better if the keyboard and mouse are used slower and more deliberately. My test system is a run-of-the-mill laptop with 512 MB ram, though, which undoubtedly impacts performance. Remember, part of your system ram has to be allocated to the virtual machine, so 512 MB should be considered barely minimal. It works, but will work better with more memory and a faster machine.

The most glaring deficiency, though, is the lack of USB support in the virtual machines. Other than a mouse or keyboard, if you want to use a USB device with Virtual PC, you're out of luck.

A vm may not be suitable if you need to directly control real hardware. If you have old programs for that purpose, conventional multibooting may be more appropriate.

Does Ghost Work in Virtual Machines?

Most backup imaging programs (Drive Image, Ghost, True Image, et al) will probably have no trouble working inside virtual machines. For example, link a virtual machine's floppy drive to the host's floppy drive, insert a Ghost 2003 boot floppy, and reboot the virtual machine from the floppy. You can then Ghost the virtual hard disk just like a real hard disk.

Can a Ghost image from a real hard disk partition be restored onto a virtual disk partition? Well, in some cases, yes. Remember that a virtual machine will have different hardware than your real hardware. Moving a Windows partition from real hardware to a virtual machine will cause Windows to generate a whole series of "found new hardware" message boxes the next time you boot the virtual machine. In essence, it's the same as moving Windows from one machine to another. The devices emulated in a virtual machine are fairly middle-of-the-road brands and models, so I think most Windows installations should be able to successfully readjust themselves to the newly found hardware without a lot of complaining.

Remember that you must run Ghost from within the virtual machine in order to see the virtual hard disk. From outside the virtual machine, the vhd is just a very large file.

On the other hand, your virtual hard disk is just that -- a very large file already, so why fuss with a Ghost backup when you can instead just save a copy of the vhd file?

License Issues

I am not a lawyer and hope never to be one, so this is not a legal interpretation. I am presenting the information here just to make the reader aware of issues concerning the End-User License Agreements (EULAs) in Microsoft's copyrighted operating systems.

Microsoft's EULAs are not exactly clear when it comes to installing one copy of Windows multiple times on a single computer. This practice evidently wasn't imagined back when the EULAs were written. Even the experts can't agree on precisely how to interpret them. Visit any of Microsoft's official newsgroups (such as microsoft.public.windowsxp.general) and you'll find the MVPs (the moderators) will argue with each other over whether multibooting duplicate installations of a single copy of XP is allowed. People have even called Redmond to get an official position, and have ended up with conflicting answers from different customer support reps.

Most reasoned arguments seem to conclude that multibooting duplicate installations with a single license is permissible as long as the duplicate installations are on a single machine and the copies cannot be run simultaneously. In the case of virtual machines, however, copies can be run simultaneously, so that argument can't be used. In the case of virtual machines, all the experts seem to be in agreement -- each copy of an OS installed in a virtual machine is supposed to have its own license.

If you have an oem version of an operating system, remember that virtual machines use an emulated bios. The OS may not work if it's designed to look for certain cues in an oem bios.

Where To From Here?

Steve Gibson has devoted several episodes of his Security Now! netcasts to the subject of virtual machines. I've provided links below to some of the most relevant episodes. Steve predicts virtualization technology will explode in the next few years. (He also thinks Microsoft is misreading the tea leaves at this point.) Intel and AMD have started to release CPUs with virtualization technology built in, making it possible to run vms more smoothly and without a speed penalty. Already we are seeing the emergence of pre-configured virtual machines (or "appliances") from competitors like VMware and Moka5. (Note that because of license issues, the current freeware appliances are predominantly linux based.)

Gibson's episode 57 netcast provides a good summarization of the pros and cons of Microsoft's Virtual PC vs. the various products from VMware, Virtual PC's main competitor. Note that VMware sees potential in offering free virtual machine players that will run pre-configured virtual machines, but Virtual PC also lets the user create his own virtual machines, if he wants.

It will be interesting to see how virtualization technology unfolds over the next few years!

Appendix: Additional Reading

Valid HTML5 author: Dan Goodell
last revised: 02/10/2017