One of the major obstacles that organizations face when refreshing their client operating system is application compatibility. If you migrate your client computers from Windows XP to Windows 7, will all your applications still work? Applications developed for older versions of Windows can fail on Windows 7 for a variety of reasons. For instance, they might not run properly because of User Account Control (UAC), a set of technologies on Windows Vista that makes it possible for end users to log on as standard users instead of privileged administrators. Many programs written for Windows XP and earlier were designed for users who log on as local administrators, which was the default on those platforms.
Such programs may not work on Windows 7, although many will because Windows 7 includes a large number of shims (small pieces of application compatibility code) for popular older programs. You might think that if you disable UAC in Windows 7 you will increase the chances of your older apps working properly. Don’t do it: Disabling UAC actually prevents the included shims from being applied, which means you're more likely to increase your compatibility issues than decrease them if you disable UAC.
Another reason that an older program might not work in Windows 7 is if the program's developer hard-coded paths to known folders such as My Documents and My Pictures. Windows 7 includes a number of directory junctions that can automatically mitigate many of these issues, but some hard-coded paths can cause an older application to fail.
What do you do when you discover that one of your critical line-of-business applications won't run properly on Windows 7? If it’s a manufacturer-supplied app, you should contact the manufacturer to ask for an updated version that meets the requirements of the Windows 7 Logo Program. If they don't have one, you'll have to either find a different app that can replace the one you were using or use a mitigation tool that will let you keep using the program in Windows 7. If the problem app was developed in-house, then you have another option: Get your developers to recode the app so it runs on Windows 7.
If your independent software vendor doesn't have an updated version of its program designed for Windows 7 (or you don't have the in-house expertise to recode your custom app) but your business can't live without it, you'll need to mitigate the compatibility issue. Windows 7 includes two inbox tools for doing this, and there are other tools available as free downloads from Microsoft. Let's first examine the inbox compatibility mitigation tools available in Windows 7. These tools are mainly designed to help end users resolve compatibility issues themselves, or for support staff to resolve compatibility issues on a one-off basis.
The Program Compatibility Troubleshooter is one of the new built-in troubleshooting tools found in Windows 7. These tools are built upon the Windows Troubleshooting Platform (WTP), which leverages Windows PowerShell 2.0 for troubleshooting hardware and software issues locally or remotely. The Program Compatibility Troubleshooter can be launched manually from the Troubleshooting item in Control Panel, but it can also be invoked automatically. For example, if you try to install an older program that is incompatible with Windows 7, the Program Compatibility Troubleshooter might display a dialog telling you what you will need to do in order to make the program work (Figure 1).
Figure 1: The Program Compatibility Troubleshooter can advise you on how to resolve compatibility issues.
The other way end users (with or without the aid of support staff) can try to resolve compatibility issues is called Compatibility Mode, which has been around since Windows XP. To use this method, right-click on the program’s executable in Windows Explorer, select Properties, and select the Compatibility tab. Select the compatibility mode you want to run the program under, and optionally apply other compatibility fixes such as disabling themes or running the program as an administrator (Figure 2).
Figure 2: Running an older program in compatibility mode.
If neither of the above tools help and your deployment is small, you can try using Windows Virtual PC with Windows XP mode. Windows Virtual PC is a runtime engine that provides a virtual Windows environment integrated into the shell of Windows 7. Windows XP mode is basically a virtual hard drive with Windows XP SP3 installed that can run within Windows Virtual PC. By installing and running your problem apps in Windows XP mode, you can run them within a virtual environment on your Windows 7 computer. From the end user's perspective, the app can be launched from the Start menu just like any other program on the computer, and it runs within its own window, not within a separate virtual desktop. The only downside is that the end user's computer must support hardware virtualization (either AMD-V or Intel VT), although older computers can't use this approach. For more information on Windows Virtual PC, go to microsoft.com.
If you're planning a large-scale migration to Windows 7, however, the tool you will most likely need to use is the Application Compatibility Toolkit (ACT) 5.5, which is available from the Microsoft Download Center. ACT is a set of tools and accompanying documentation that let you inventory the applications in your organization, identify which of them will or won't work with Windows 7, and allow you to apply compatibility fixes (shims) and take other steps to mitigate the issues identified (Figure 3).
Figure 3: the Application Compatibility Toolkit can help address issues.
Finally, if you are a Software Assurance (SA) customer, you can access the Microsoft Desktop Optimization Pack (MDOP), which includes Microsoft Enterprise Desktop Virtualization (MED-V) and Application Virtualization (App-V), both of which can be used to mitigate compatibility issues using virtualization technologies. For more information about App-V and MED-V, download my free e-book, Understanding Microsoft Virtualization Solutions: From the Desktop to the Datacenter from Microsoft Press.
The most important thing to remember concerning application compatibility is this: Don't procrastinate! The earlier in your client OS refresh cycle that you investigate possible compatibility issues, the more successful your migration or deployment is likely to be. For more guidance about how to mitigate compatibility issues in Windows 7, see Part 2, Deployment in the Windows 7 Resource Kit from Microsoft Press. Also see the Windows 7 Resource Kit Unofficial Support Site.