- The Program Compatibility Wizard in Help and Support and the Compatibility tab in file properties are useful tools for users to fix program-compatibility issues in Windows Vista , Windows 7 & Windows 8 , Windows Server 2008.
- The Program Compatibility Assistant (PCA) can make older programs that have compatibility problems work better in an automated manner. PCA monitors programs for known issues.
- When a user runs an app, PCA tracks the app and identifies any symptoms of certain known compatibility issues. When it detects any issue symptoms, it provides the user an opportunity to apply a recommended fix that will help run the app better.
Detecting Failures in Setup Programs 
- One of the main scenarios for PCA is detecting setup programs failing to install on Windows 7 and providing the solution of applying the Windows XP compatibility mode.
- The most common setup failure is due to installers hard-coding the check for the Windows OS version. These installers will typically fail with an error message saying that the current version of Windows is not supported and installation will be terminated.
Detecting Program Failures under UAC 
- The second main scenario category for PCA is detecting program failures while running under User Access Control (UAC). PCA detects three different types of program failures under UAC, which are described in the following sections.
Detecting Program Failures While Trying to Launch Installers 
- PCA detects this particular scenario of a program not running as Administrator that is experiencing a failure while launching a child program, because the child program is required to run as Administrator. This scenario will typically be the case for programs trying to launch an updater program because Windows Vista and Windows Server 2008 returns a new error code to programs trying to launch an executable that is detected to run as Administrator. If the same updater is run from Windows Explorer, it will run as administrator since Explorer knows how to handle this error code. Explorer launches the UAC consent UI asking for administrator credentials or approval and finally runs the program as Administrator. The following is an example of a PCA dialog that will show up in this scenario, illustrated by a test program.
- One of the tenets of Windows is that the installation of most software requires administrative privileges. This requirement is because installed applications are loaded into system directories and manipulate system resources. The installation-detection part of the overall UAC feature helps by identifying setup programs and automatically prompting the user for Administrator approval or credentials. In some cases it is possible that an installation program might not be detected by UAC. These programs are typically custom made installers that are not built using standard installer technologies such Install Shield and Microsoft Windows Installer.
Detecting Legacy Control Panels That Might Need to Run as Administrator 
- The last UAC-related scenario addressed by PCA is to detect Control Panel items that need to be run as Administrator. After a legacy Control Panel item is run once, a PCA dialog similar to the following one will show up.
Detecting Program Failures Due to Deprecated Windows Components 
- This PCA scenario mitigates the impact on programs due to deprecated (removed) components in Windows Vista and Windows Server 2008. PCA detects programs that are trying to access a DLL or a COM object removed in Windows Vista and Windows Server 2008. If a program is detected trying to access a known DLL or COM object, PCA will provide a UI at the program termination to inform the user and provide options to check online for a solution.
- The following is an example of a PCA dialog that will show up in this scenario, illustrated by a test program.
Detecting Unsigned Drivers on 64-Bit Platforms 
- In this scenario, PCA is trying to protect the system stability due to programs or devices using unsigned drivers on 64-bit platforms. Windows Vista and Windows Server 2008 do not support unsigned drivers on the 64bit platform and enforce a policy that all drivers should be signed. If an unsigned driver is installed into the system with a 64-bit platform, it will not be loaded. After the user reboots the machine, the system will not start if it is a boot-time driver. The device or program trying to use the driver might experience failures that might also result in a system crash. In order to prevent this problem, PCA monitors installation of unsigned drivers, and whenever PCA detects installation of an unsigned driver, it will notify the user as shown in the following dialog.
- If it is a boot-time driver, PCA will disable the driver so that the system will be able to boot.
- PCA detects this scenario first by monitoring changes to the KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services registry key for addition of new drivers into the system. Then, based on the location of driver from the registry, each new driver installed will be checked for a valid digital signature. If the driver does not have a valid signature, the PCA dialog will be displayed. Unlike in the other PCA scenarios, this message is not related to specific applications and is related to the driver, regardless of how it was installed.
Informing Users about Compatibility Issues with Known Programs at StartupApart from the runtime issue detection scenarios listed above, PCA also informs users at program startup if the program belongs to a list of programs known to have compatibility issues. The list is stored in the System application compatibility database. This scenario also exists in Windows XP, and these messages are known as the Application Help (shortly Apphelp) messages. There are two types of Apphelp messages:
Managing Apphelp Messages
- In an Enterprise setting, an IT Professional can use the Compatibility Administrator tool to disable the Apphelp entries present in the System application compatibility database or add custom databases that contain Apphelp messages for programs used in the enterprise.
- The Compatibility Administrator tool ships as part of the Application Compatibility Toolkit.