Windows 7’s XP Mode: what it is, how it works, who it’s for

Ars takes you inside one of Windows 7's most talked-about and misunderstood …

The bespoke line-of-business application is a common feature of the corporate world, and a thing that has been instrumental in cementing Windows as the corporate desktop OS standard. These applications—I've worked on a few myself—are typically crummy affairs. The foundation of such applications is typically some combination of Visual Basic 6 and obsolete versions of Access and Excel. On top of this mound of [redacted], these apps usually contain one or more third-party components to draw graphs or something, from vendors that have long since gone out of business.

These applications often grow organically (though you should be thinking "mold" or "bacterial infection" rather than "rose" or "kitten") over a period of years, acting as a time-capsule of sorts—if you want to know how software was written in 1993, there is no better place to look than the bespoke line-of-business application—and they have a tendency to outlast their creators. The result is that many of these programs are unmaintained, with no one entirely sure how they work or how it is that they do whatever it is that they do. But one thing is common to all: they're all essential to the continued operation of the business. If the app won't run, the business won't run either.

It is this kind of application, more than any other, that causes Microsoft's slavish adherence to backwards compatibility. Sure, it's important to have some amount of compatibility for regular commercial software, but major applications are supported and actively maintained, so they can be upgraded, or replacements sought. No such joy with the line-of-business application. If it gets broken by an operating system upgrade—or even a Service Pack or security patch—then there's little option but to refrain from upgrading.

One strategy companies have used to free themselves from the problems of such applications has itself caused even more compatibility headaches. Many businesses have redeveloped their essential applications to be delivered through a Web browser, in principle relieving the operating system dependence. Unfortunately, these Web apps have all too often suffered the same fate as their desktop counterparts, leaving them locked in to a particular version of a particular browser. Worse luck for Web developers; it's normally version six of Internet Explorer. The result ends up being the same; companies have to stick with software that's well past its use-by date, because if they upgrade, important things stop working.

This problem has been a thorn in Redmond's side for many years. It's great for Microsoft to have this entrenched, committed user-base, of course—it's a great money-maker—but it serves as a huge restriction on what the company can do. Change Windows (or IE) too much, and these essential-but-awful applications stop working. That becomes an even bigger problem when the changes are essential, such as fixing security flaws or improving general security robustness.

The issue really came to a head with the release of Windows Vista. Vista's compatibility with XP was very good, but it wasn't perfect. Microsoft did a lot of work on Vista to harden it against attacks (UAC, of course, but also other things, like prohibiting services from having user interaction), and together these modifications and improvements, along with more mundane stuff like updating the version number that Windows has, have conspired to break some old software.

How much old software is broken is hard to say; programs that play by the rules by honoring the system's security and not making unwarranted assumptions shouldn't break, and most software falls into this category (or close enough). But the fact remains, there are programs that break on Vista, and many of these are critical to corporate users. And because the latest and greatest Windows 7 is based on Windows Vista, it, too, has the same problem.

Virtualizing the problem

With Windows 7, however, Redmond has provided a solution to the problem: Windows XP Mode. Windows XP Mode uses virtualization technology to let applications running on a virtualized copy of Windows XP show up in the Windows 7 Start menu and on the Windows 7 desktop.

Windows XP Mode is a downloadable add-on for Windows 7 Professional, Ultimate, and Enterprise. It has two parts: the virtualization software itself, and a disk image containing a pre-installed, activated, licensed copy of Windows XP Professional with Service Pack 3 preinstalled, complete with the glorious Internet Explorer 6.

The virtualization software is the latest iteration of Virtual PC. Although you wouldn't know it from the download page, this is available for any version of Windows 7 aside from Starter. You wouldn't know it, because selecting a version of Windows other than those previously listed removes the option to download Virtual PC. It shouldn't, though; it should only remove the option to download the Windows XP Mode image.

In a break from the past, the new version requires hardware virtualization support—Intel's VT or AMD's AMD-V. Microsoft's current server virtualization platform, Hyper-V, has the same requirement, but for Virtual PC this is a new demand, and one that's perhaps a little surprising. For virtualizing 32-bit guest OSes, far and away the most common usage scenario, the benefits of hardware virtualization are something between small and non-existent; though hardware virtualization is potentially a little faster, the difference in practice isn't perceptible.

What the requirement does do, however, is rule out using Windows XP Mode on a range of Intel's low- and mid-range processors. Although most AMD processors include AMD-V (and with a clear division between those which do (Athlon, Opteron, and Phenom models released after mid-2006, Sempron models released after mid-2008) and those which don't (everything else), there's no such convenient division on the Intel side of the fence. Some Core 2 Duos include VT; others don't. For example, consider the Core 2 Duo E8200 and E8190 launched in January 2008. These were both premium parts (branded Core 2 Duo rather than Celeron or Pentium). The E8200 is clearly 10 better than E8190, but what does 10 get you here? In this case, it gets you VT. (Even more curious is that the E8190 cost is the same as the E8200; it was designed for OEMs who apparently wanted a part like the E8200 but without the features. Crazy). There's no consistency or easy rule of thumb to use; my original generation Core 2 Duo E6700 has VT, but the newer, higher-numbered E7500 doesn't.

To make matters worse, as a reaction to Microsoft's decision, some models of processor that previously didn't have VT had it added without even changing the model name. If you have a Core 2 Quad Q8300, for example, it might have VT or it might not, depending on when exactly it was manufactured. The mess is all a result of Intel's over-the-top approach to market segmentation. Every processor the company makes includes the VT hardware, but it's just disabled for some models. Problem is, VT has (until now) never been a feature that the company can meaningfully upsell, because average consumers have no idea what on earth it is or what it's for. Until now, it never really mattered. In an ideal world, Intel would learn from this and stick to vaguely comprehensible divisions for its market segmentation: clock speed, core count, and at a pinch, cache size, and the naming scheme would be rationalized to establish some kind of "higher = better" consistency.

59 Reader Comments

Interesting article. I must note, the only reason you gave for VirtualPC having 3d acceleration support is that other virtualization software offers it. That's not much of an argument. If there's no user-demand for 3d acceleration in a virtual machine, then Microsoft would be stupid to spend time on it.

Gosh, I hope my company upgrades to Windows 7 soon. XP is killing me! I wonder if we have a lot of those old custom applications around. None on my computer.

I purchased a new comp with Win 7 in order to use an older Digital Audio Workstation piece of software (Pro Tracks Plus) which works great for my home studio. It does need access to the hardware, though, since latency can cause some problems. What I got from the article is that this is just a VM running XP within 7. Does it hold any advantages over, say, running VirtualBox on Ubuntu (my OS of choice)? Just curious if anyone knows if this will work. I tried it with Vista, even in the compatibility mode, and it still didn't work.

Interesting article. I agree that supporting compatibility modes is an excellent way to unshackle Microsoft from tedious backwards compatibility requirements in new OS versions. They should offer compatibility modes for the last few previous Windows versions with every new release and break things almost gratuitously as they advance.

I don't mean to be facetious, (well, maybe a little) it just seems that Microsoft has an awful lot of smart people, and it would be interesting to see what those people could do with a bit more freedom. Google & Yahoo have everything on their own servers so they can upgrade whenever it suits them and Apple throws off hardware architectures faster than Microsoft changes kernels, which they can get away with largely because they aren't tied to crusty old internal business apps.

Those internal business apps are usually so bloody ugly and painful to use that nobody would notice or care how rough the compatibility mode software was.

To control which application shortcuts from XP mode are shown in Win7, simply move the shortcuts (in XP mode) between the "All Users" and "[NAME]" Start Menu folders. As I recall, the "All Users" folder is what gets shown in Win7, while the Start Menu folder associated with the XP user account is not integrated.

Interesting article. I must note, the only reason you gave for VirtualPC having 3d acceleration support is that other virtualization software offers it. That's not much of an argument. If there's no user-demand for 3d acceleration in a virtual machine, then Microsoft would be stupid to spend time on it.

The argument would be that 3D acceleration would mean even more legacy software can run. In an ideal world, it would pass through 3D calls to the native hardware, allowing near-native 3D performance. This would make virtualization of, for example, CAD and game software feasible.

No one should have to be using the WIndows XP Mode thing except businesses. I have yet to find ONE game, software program, etc. that I use (outside of work) on a regular basis that will not run in Windows 7..... as to those businesses that are using those old apps.... do what my business is doing: PHASING THEM OUT! And going to a newer one, written for Windows 32, that will be good for the next 20 years.

I dunno, I think moving forward and removing a giant chunk of backwards compatibility is the only way to go for Windows at this point. Go ahead and tell people now that Windows 8 will be in 2013 and by then all apps prior to Win7 will only run in compatibility mode. All processors should support virtualization by then and a lot of the cruft that takes up so much space of Windows code could be streamlined out. Apple has done this several times in the past, wiping away the last vestige of OS9, saying bye bye to the G3 and G4, then with Snow Leopard saying no more PowerPC code.

XP is already falling out of long term support anyway, so anyone still clinging to XP with their apps that require it are not going to be covered by Microsoft for much longer at all. The company I work for is skipping Vista and going from XP straight to Windows 7. They also jumped directly from SQL2000 to SQL2008. Next up is a huge raft of applications for .NET.

You know, I really could have used this article yesterday when one of our support engineers was trying to install our software onto a customers PC in XP mode. (Don't ask me why. The software works pretty much fine in Windows 7 but the powers that be say it hasn't been tested so we don't support it. We haven't tested on XP mode either, and we understand even less about that)

One thing isn't clear to me, and I wish you'd added screen shots for it: how do you set up the USB pass-through?

Originally posted by Abresh:No one should have to be using the WIndows XP Mode thing except businesses. I have yet to find ONE game, software program, etc. that I use (outside of work) on a regular basis that will not run in Windows 7..... as to those businesses that are using those old apps.... do what my business is doing: PHASING THEM OUT! And going to a newer one, written for Windows 32, that will be good for the next 20 years.

Download the XP mode VM, and then download VMWare player, and use it to import the Windows XP mode VM. don't even bother firing up Virtual PC. VMWare has done a *much* better job of integrating the XP guest with the Windows 7 client.

Why do I use XP in a VM? A Cisco VPN client that has no Windows 7 support, and to provide a reasonably isolated environment for client work for a client who is still on XP.

I work for a company with 250,000 employees. If you figure 2/3 of them have at least one company desktop you can bet that means +160,000 Microsoft XP Professional licenses. But in these operating corporate realm the consistent delimiting (productivity) isn't in the operating system, but rather too many dissociative hands developing too many Java script based applications requiring different versions of of the base resources (Java) and not be at all flexible to other versions.

This often leads to an application update requiring a new version of Java, that when installed breaks other applications that are too rigidly developed for only their reference version. Seems silly, unexpected, and counter to Java-logic, but there you have it. Lack of standardization in the corporate environment goes well beyond Microsoft.

Originally posted by Abresh:No one should have to be using the WIndows XP Mode thing except businesses. I have yet to find ONE game, software program, etc. that I use (outside of work) on a regular basis that will not run in Windows 7..... as to those businesses that are using those old apps.... do what my business is doing: PHASING THEM OUT! And going to a newer one, written for Windows 32, that will be good for the next 20 years.

I work in a hospital, and phasing out XP isn't going to happen anytime soon. We're dependent on third-party software that's really old, because moving the data into a new app is both expensive and has the potential to lose patient data. The company supporting the software does try to keep it up to date, but can't do a major overhaul without breaking its compatibility with other systems we rely on.

It's a Catch-22 in health care. We'd have to completely overhaul our software infrastructure (and some major hardware that relies on it) to make a change like that, and that has a ton of pitfalls. Luckily, we've found a company that can replace a couple of our aging programs with a single modern app... but the transition period is going to work our IT department to death. And that's without considering a change to Windows 7...

Originally posted by Abresh:No one should have to be using the WIndows XP Mode thing except businesses. I have yet to find ONE game, software program, etc. that I use (outside of work) on a regular basis that will not run in Windows 7..... as to those businesses that are using those old apps.... do what my business is doing: PHASING THEM OUT! And going to a newer one, written for Windows 32, that will be good for the next 20 years.

I work in a hospital, and phasing out XP isn't going to happen anytime soon. We're dependent on third-party software that's really old, because moving the data into a new app is both expensive and has the potential to lose patient data. The company supporting the software does try to keep it up to date, but can't do a major overhaul without breaking its compatibility with other systems we rely on.

It's a Catch-22 in health care. We'd have to completely overhaul our software infrastructure (and some major hardware that relies on it) to make a change like that, and that has a ton of pitfalls. Luckily, we've found a company that can replace a couple of our aging programs with a single modern app... but the transition period is going to work our IT department to death. And that's without considering a change to Windows 7...

Sucks, but think about it -- how long are you going to rely on that old app? Another 5 years? 10 years? 20 years? Sooner or later, the bullet will have to be bitten, and the longer that decision is deferred, the more painful its going to be. There really is only one choice.

The result is that many of these programs are unmaintained, with no one entirely sure how they work or how it is that they do whatever it is that they do.

If you're lucky. We have one ancient app (VB6) that is very important to at least one of our plants that needed to be upgraded after moving the databases it depends on to SAP (no upgrade from XP is in the works yet). Unfortunately, everybody who worked on it originally has long since left and nobody even 100% sure what it's supposed to do, let alone how it does it.

Originally posted by mjdlight:Sucks, but think about it -- how long are you going to rely on that old app? Another 5 years? 10 years? 20 years? Sooner or later, the bullet will have to be bitten, and the longer that decision is deferred, the more painful its going to be. There really is only one choice.

If it is an application connected to a million pound MRI scanner, or a piece of lab equipment that cannot be replaced (important if you are trying to replicate results) then it is highly likely you will still be using that application in 20 years.

Some applications can be replaced, but it isn't always as simple as changing a spreadsheet.

Originally posted by mjdlight:Sucks, but think about it -- how long are you going to rely on that old app? Another 5 years? 10 years? 20 years? Sooner or later, the bullet will have to be bitten, and the longer that decision is deferred, the more painful its going to be. There really is only one choice.

True enough, but what you are missing is how many shareholders are going to hold on to their shares for 5, 10 or 20 years? How many CEO's or board members are still going to be in the same job 5, 10 or 20 years from now? Unfortunately, capitalism tends to encourage just this kind of short-sightedness.

A few comments. IE 6 displaying in the start menu of the host computer is only a registry hack away with the VM, and it's a hack that's documented. Did the same thing to allow an older copy of office to cascade through as I needed it for our barcode integration software.

Second, it works well for what it's designed. The pass through works well, except for multiple monitors. It doesn't support moving an XP mode app to my secondary display.

I've used it since it was still in Beta. I wouldn't call it perfect, but it works well. We handle the couple of users with XP mode installed by having the XP mode machine joined to the domain and updating through WSUS.

The medical industry for one uses really old stuff that can be mission critical. Writing a new application, testing and deploying takes a lot of time and money, not to mention risks stability (which is pretty important in the medical side of things).

A few comments. IE 6 displaying in the start menu of the host computer is only a registry hack away with the VM, and it's a hack that's documented

Sure, it just seems a strange thing to not include by default, as I would have thought IE6 was a pretty big motivator (MS has been giving away XP VMs for testing websites with IE6 for quite a long time, after all). The MED-V-level integration would be better still, of course.

I've tried to run SimCity 3000 in XP Mode and it won't launch claiming no video device was found. It works fine in Virtual Box. I've had some other smaller difficulties that I can't remember any more but I gave up on XP Mode and use Virtual Box instead. As an added bonus, I can open my VMs on my Mac at work.

The other thing XP Mode will allow you to do is run apps with 16 bit components (sometimes it's just the installer for older apps thats 16 bit) on an x64 bit version of Windows, which can't normally be done with other compatibility modes included with windows.

The other thing XP Mode will allow you to do is run apps with 16 bit components (sometimes it's just the installer for older apps thats 16 bit) on an x64 bit version of Windows, which can't normally be done with other compatibility modes included with windows.

Hmm, in theory Windows is meant to detect and trap the widespread 16-bit installer stubs and replace them with 32-bit code.

I just picked up a cheap laptop (Lenovo SL410) that came with 7 Pro. I basically use it just for the basics, so I didn't need anything fancy. Then I found out about Cisco VPN not working and that's what we use at work. I looked into XP Mode and realized that I don't have virtualization enabled on my processor. From what I've read it's not available in the BIOS.

I'm going to look into what joshv said about VMWare. I have used VirtualBox on another system, but I read some reports of people having difficulties with the Cisco VPN. Eventually, I'll just have to try it out, but I want to get it right the first time. Any opinions on the best method to get Cisco VPN working on a Windows 7 machine with neutered virtualization hardware?

PS: Very nice article. I appreciate all the new in depth articles we're seeing on Ars.

Originally posted by lost_packet:The medical industry for one uses really old stuff that can be mission critical. Writing a new application, testing and deploying takes a lot of time and money, not to mention risks stability (which is pretty important in the medical side of things).

Ditto analytical laboratories. We have gas chromatographs running Win98. Two of our PC's must have motherboards with an ISA bus because of the old HPIB cards. HP quotes tens of thousands of dollars to "upgrade" controller cards in the PC and the instrument, and also the software; to accommodate any newer PC, OS or architecture.

I wonder how this virtualization within windows 7 compares with running win 7 and win XP both under VMWare. Or, is that even possible?

I am glad to have this article, it answered some questions I had about the XP VM in W7. I think you're definitely off base with the MED-V questions and the statement "the very smallest companies probably can't afford custom applications in the first place". Small companies are the ones most likely to have some creaky, hacked-together app that was made by an intern 7 years ago. Small companies don't have full-time programmers, nor a budget to hire contractors to solve problems. They are left with Brad who does accounting and also is "kind of interested in Visual Basic" to throw together a solution with duck tape and bailing wire. These companies probably still can't afford to hire a real programmer to build a solution, but they only have 20-50 desktops so MED-V is no solution.

I've been mildly interested in the XP mode, but never have had the opportunity to delve into it properly. Coming from a Mac OS X -> Classic environment, I'm not sure I understand it 100%. I understand the premise, RemoteApp, and everything, but the integration issues are what I'm not sure about.

When I double-click an installer, I presume there's no distinct way for Windows 7 to appropriately launch the Windows XP VM in "installer mode" and install it. Likewise, is there any integration between the host's set of accounts and the VM's? I would assume not, given those screenshots on page 2, and the notes in subsequent pages about not carrying across localisation/date settings. And what of the Cisco VPN items you mention -- does running that allow you to connect to your company's internal network from within Windows 7?

Likewise, I wonder why Microsoft doesn't take a page from something like WINE's (this is a poor example for a whole host of reasons, but it's the only one I could think of in this context) book and just keep around a subset of legacy DLL's and libraries -- enough to functionally launch old applications -- into a sandboxed directory that is entirely cut off from the end user. Perhaps that's not architecturally tenable, I guess, but it seems like it'd be a win on all ends. It may have some initial upfront engineering costs to Microsoft, but I believe the end user would win with integration and reduced system overhead, and Microsoft would win by being able to mitigate having to maintain backward compatibility and being able to make a clear architectural break if it so desires/requires. Again, perhaps this would be more difficult than I make it out to be; I don't know if there'd be any clear delineation as to say, "This application should use legacy mode, and this one should use Windows 7 mode."

It looks to me as though this is a facade -- albeit a rather decent one -- of a simple traditional virtual machine. On the whole, though, great article and it's nice to see Microsoft moving in the direction of making necessary architectural changes while maintaining their steadfast vision on backward compatibility.

These companies probably still can't afford to hire a real programmer to build a solution, but they only have 20-50 desktops so MED-V is no solution.

I'm not sure I agree. Volume licensing agreements (with SA) are available from as few as 5 desktops; the Open Value/Open License agreements start at this level. So I would argue that at this scale, MED-V is viable. For SA to not be viable, you're really talking 0-10 desktops (IMO), and that's the kind of scale where you probably don't have either an IT department or custom apps.

Originally posted by mjdlight:Sucks, but think about it -- how long are you going to rely on that old app? Another 5 years? 10 years? 20 years? Sooner or later, the bullet will have to be bitten, and the longer that decision is deferred, the more painful its going to be. There really is only one choice.

True enough, but what you are missing is how many shareholders are going to hold on to their shares for 5, 10 or 20 years? How many CEO's or board members are still going to be in the same job 5, 10 or 20 years from now? Unfortunately, capitalism tends to encourage just this kind of short-sightedness.

There's a rule where I am that nothing gets changed unless there is a business driver causing the change. A while ago, it was declared that Microsoft releasing a new operating system, was not a business driver for new software upgrades. As such, we have some 20 - 25 year old C code processing healthcare billing. It's worked reliably for this long and will continue to work until there is a business reason to change the code. Business environments are significantly more involved than your typical home or small business. In the healthcare business, changes can and do lead to lawsuits or misdiagnosis so most executives want to limit exposure by only making changes that can be reasonably defended as necessary changes. You would be surprised how complicated the Medicare system has made something as simple as billing for a patient's stay in a hospital. Changes to software, directly impact the financially and legally audited systems that are in place running the business today. Changes therefore need to be developed, tested, deployed, financially audited and legally audited to ensure compliance with all know laws. All to avoid being sued out of existence for a couple of key mistakes by a programmer.

The lab where my husband works would love to have your Win98 machine. They are using a DOS system to run a spectrochemistry machine (I call it the Zapper.) that replaced a teletype machine with paper tapes. That teletype was LOUD.

Heheh. Isn't VB6 quite a bit older than even WinXP? Wikipedia says 1998. If some businesses are still using it, yikes.

chuckle. see above. We use ANSI C in some places and there's a very valid business reason why it remains that way.

Except that ANSI C is still a supported standard, and is highly viable for any new project that requires bare metal access. Admittedly I'm not in the business world, but most of the code I write is in ANSI C, with some C++ (and some "fun" fortran).

I guess it depends on the industry though, as many of the big manufacturing firms that do any sort of simulation work as part of the product development process use LOTS of C/C++ and fortran code.

This was a very informative article, thank you. My company uses Check Point Software's SecureClient for our VPN and it only works on Windows XP. Does anyone know if this will run correctly under the XP mode. Also, if you run one of these VPN's in XP Mode, does that mean you're Windows 7 apps can access the network, or is it just other apps that are running in your XP Mode virtual environment? More specifically, I really want to be able to use Remote Desktop and my browsers from Windows 7.