Most new software programs are certified as Windows
XP–compatible, meaning that they can be installed and run without mishap
on any Windows XP system. But what about older programs that were coded
before Windows XP was released? They can be a bit more problematic.
Because Windows XP is based on the code for Windows 2000—which was in
turn based on Windows NT—programs that are compatible with those
operating systems will probably (although not definitely) be compatible
with Windows XP. But the real problems lie with programs written for
Windows 9x and Me. Windows XP—even Windows XP Home—uses a completely
different code base than the old consumer versions of Windows, so it’s
inevitable that some of those legacy programs will either be unstable
while running under Windows XP, or they won’t run at all.
Why do such
incompatibilities arise? One common reason is that the programmers of a
legacy application hard-wired certain data into the program’s code. For
example, installation programs often poll the operating system for its
version number. If an application is designed for, say, Windows 95, the
programmers might have set things up so that the application installs if
and only if the operating system returns the Windows 95 version number.
The program might run perfectly well under any later version of
Windows, but this simplistic brain-dead version check prevents it from
even installing on anything but Windows 95.
Another reason incompatibilities arise is that calls to API (application programming interface) functions return unexpected results. For example, the programmers of an old application may have assumed that the FAT (file allocation table)
file system would always be the standard, so when checking for free
disk space before installing the program, they’d expect to receive a
number that is 2GB or less (the maximum size of a FAT partition). But
FAT32 and NTFS (NT file system)
partitions can be considerably larger than 2GB, so a call to the API
function that returns the amount for free space on a partition could
return a number that blows out a memory buffer and crashes the
installation program.
These types of problems
might make it seem as though getting older programs to run under Windows
XP would be a nightmare. Fortunately, that’s not true because the
Windows XP programmers did something very smart: Because many of these
application incompatibilities are predictable, they gave Windows XP the
capability to make allowances for them and so enable many older programs
to run under Windows XP without modification. In Windows XP, application compatibility refers to a set of concepts and
technologies that enable the operating system to adjust its settings or
behavior to compensate for the shortcomings of legacy programs. This
section shows you how to work with Windows XP’s application
compatibility tools.
Determining Whether a Program Is Compatible with Windows XP
One way to determine
whether an application is compatible with Windows XP is to go ahead and
install it. If the program is not compatible with Windows XP, you might
see a dialog box similar to the one shown in Figure 1.
At this point you could
click Continue (in some dialog boxes, the button is named Run Program),
but this is a risky strategy because you can’t be sure how the program
will interact with Windows XP. This approach is riskiest of all when
dealing with disk utilities, backup software, antivirus programs, and
other software that requires low-level control of the system. It’s
extremely unlikely that Windows XP would ever allow such programs to
run, but you should always
upgrade such products to Windows XP–compatible versions. A much safer
route is to click Cancel to abort the installation and then visit the
vendor’s website or the Windows Update site to see whether a Windows
XP–friendly update is available. (You can often get the company’s web
address by clicking the Details button.)
Note
Where does the information in these dialog boxes come from? In the %SystemRoot%\AppPatch folder, Windows XP has a file named Apphelp.sdb that contains messages such as the one shown in Figure 5.5 for all known applications that don’t have compatibility fixes (discussed later in this section). The .sdb files aren’t text files, so opening them with Notepad or WordPad will not allow you to read any of these stored messages.
A better approach is to
find out in advance whether the program is compatible with Windows XP.
The most obvious way to do this is to look for the Designed for Windows
XP logo on the box. For older programs, check the manufacturer’s website
to see whether the company tells you that the program can be run under
Windows XP or if an upgrade is
available.
What if you’re upgrading
to Windows XP and you want to know whether your installed software is
compatible? The easiest way to find out is to use the Upgrade Advisor
tool, which is available on the Windows XP Professional CD. (The Windows
XP Home CD doesn’t have the Upgrade Advisor.) Insert the Windows XP
Professional CD and, when the Welcome to Microsoft Windows XP screen
appears, click Check System Compatibility. Run through the Advisor’s
dialog boxes until you get to the report on system compatibility. This
report will list software that doesn’t support Windows XP and possibly
software that needs to be reinstalled after the Windows XP setup has
finished.
Understanding Compatibility Mode
To help you run programs
under Windows XP, especially those programs that worked properly in a
previous version of Windows, Windows XP offers a new way to run
applications using compatibility layers. This means that Windows XP runs the program by doing one or both of the following:
Running the program in a compatibility mode—
This involves emulating the behavior of previous version of Windows.
Windows XP can emulate the behavior of Windows 95, Windows 98, Windows
Me, Windows NT 4.0 with Service Pack 5, or Windows 2000.
Temporarily changing the system’s visual display so that it’s compatible with the program—
There are three possibilities here: setting the color depth to 256
colors; changing the screen resolution to 640×480; and disabling Windows
XP’s visual themes.
Note
Windows XP and Microsoft often use the terms compatibility layer and compatibility mode
interchangeably, depending on which compatibility tool you’re using. In
some cases, the emulations of previous Windows versions are called operating system modes.
These are the
broad compatibility layers supported by Windows XP. As you’ll see a bit
later, Windows XP also offers fine-tuned control over these and other
compatibility settings. For now, however, you have two ways to set up a
compatibility layer:
Right-click the
program’s executable file or a shortcut to the file, click Properties,
and then display the Compatibility tab in the property sheet that
appears. To set the compatibility mode, activate the Run this Program in
Compatibility Mode For check box (see Figure 2),
and then use the list to choose the Windows version the program
requires. You can also use the check boxes in the Display Settings group
to adjust the video mode that Windows XP will switch to when you use
the program.
Run
the Program Compatibility Wizard by selecting Start, All Programs,
Accessories, Program Compatibility Wizard. Use the wizard’s windows to
select the program’s executable file, choose a compatibility mode, set
the visual options, and then test the program.