Using the WinXPSP2VersionLie Fix

Applies To: Windows 7, Windows Vista

This section includes information about using the WinXPSP2VersionLie compatibility fix, including the associated issues, intercepted application programming interface (API) details, included and excluded modules, and usage.

WinXPSP2VersionLie

All version lie compatibility fixes address the issue whereby an application fails to function because it is checking for, but not finding, a specific version of the operating system. The WinXPSP2VersionLie returns the Windows® XP with Service Pack 2 (SP2) version information to the application, regardless of the actual operating system version that is running on the computer, allowing the application to continue running.

Important

This compatibility fix will not work with .NET Framework code.

Investigating the Issue

Application-related issues that can be resolved by applying the WinXPSP2VersionLie compatibility fix typically appear as dialog boxes or user interface (UI) elements that state your current operating system is not supported.

To test if a version lie compatibility fix will resolve your issue, you can follow these steps:

  1. Right-click the problematic application's executable (.exe) file, and then click Properties.

  2. Click the Compatibility tab, click to select the Run this program in compatibility mode for check box, and then click the operating system for which the application was designed to run.

Important

The compatibility mode that is applied to the application by using the Compatibility tab includes additional fixes. You may not require all of the additional fixes to address your current application compatibility issues; however, it is easier to apply the fixes as a group rather than to require you to pick out the individual fixes. The application of the additional fixes will not cause new compatibility issues.

Note

If the version lie compatibility fix does not correct your problem, you might need to investigate how the application is inspecting the version number, and possibly apply the VirtualRegistry compatibility fix if it is checking the registry keys. For more information about the VirtualRegistry compatibility fix, see Using the VirtualRegistry Fix.

Intercepted APIs

The following table provides a list of APIs that are intercepted by the WinXPSP2VersionLie fix.

API Description

GetVersionExA

Returns the LPOSVERSIONINFOA structure, with the following values:

  • dwMajorVersion = 5

  • dwMinorVersion = 1

  • dwBuildNumber = 2600

  • dwPlatformId = VER_PLATFORM_WIN32_NT = 2

  • szCSDVersion = "Service Pack 2"

If passed a LPOSVERSIONINFOEXA structure, it also includes the following values:

  • wServicePackMajor = 2

  • wServicePackMinor = 0

GetVersionExW

Returns the LPOSVERSIONINFOW structure, with the following values:

  • dwMajorVersion = 5

  • dwMinorVersion = 1

  • dwBuildNumber = 2600

  • dwPlatformId = VER_PLATFORM_WIN32_NT = 2

  • szCSDVersion = "Service Pack 2"

If passed a LPOSVERSIONINFOEXW structure, it also includes the following values:

  • wServicePackMajor = 2

  • wServicePackMinor = 0

GetVersion

Returns the required DWORD value of 0x0A280105

RtlGetVersion

Returns the PRTL_OSVERSIONINFOW structure, with the following values:

  • dwMajorVersion = 5

  • dwMinorVersion = 1

  • dwBuildNumber = 2600

  • dwPlatformId = VER_PLATFORM_WIN32_NT = 2

  • szCSDVersion = "Service Pack 2"

If passed a RTL_OSVERSIONINFOEXW structure, it also includes the following values:

  • wServicePackMajor = 2

  • wServicePackMinor = 0

Included and Excluded Modules

The following table provides details for the modules that are included and excluded by the WinXPSP2VersionLie compatibility fix.

Module Name Included or Excluded

msvcrt.dll

Excluded

msvcirt.dll

Excluded

oleaut32.dll

Excluded

kernel32.dll

Excluded

mscordacwks.dll

Excluded

mscordbc.dll

Excluded

mscordbi.dll

Excluded

mscorie.dll

Excluded

mscorjit.dll

Excluded

mscorld.dll

Excluded

mscorlib.dll

Excluded

mscorpe.dll

Excluded

mscorrc.dll

Excluded

mscorsec.dll

Excluded

mscorsn.dll

Excluded

mscorsvc.dll

Excluded

mscortim.dll

Excluded

mscorwks.dll

Excluded

blackbox.dll

Excluded

indivbox.key

Excluded

indiv01.key

Excluded

indiv02.key

Excluded

indiv03.key

Excluded

indiv04.key

Excluded

indiv05.key

Excluded

indiv06.key

Excluded

indiv07.key

Excluded

indiv08.key

Excluded

indiv09.key

Excluded

indiv10.key

Excluded

indiv11.key

Excluded

indiv12.key

Excluded

indiv13.key

Excluded

indiv14.key

Excluded

indiv15.key

Excluded

indiv16.key

Excluded

indiv17.key

Excluded

indiv18.key

Excluded

indiv19.key

Excluded

indiv20.key

Excluded

indiv21.key

Excluded

indiv22.key

Excluded

indiv23.key

Excluded

indiv24.key

Excluded

indiv25.key

Excluded

indiv26.key

Excluded

indiv27.key

Excluded

indiv28.key

Excluded

indiv29.key

Excluded

indiv30.key

Excluded

indivbox_64.key

Excluded

indiv01_64.key

Excluded

indiv02_64.key

Excluded

indiv03_64.key

Excluded

indiv04_64.key

Excluded

indiv05_64.key

Excluded

indiv06_64.key

Excluded

indiv07_64.key

Excluded

indiv08_64.key

Excluded

indiv09_64.key

Excluded

indiv10_64.key

Excluded

indiv11_64.key

Excluded

indiv12_64.key

Excluded

indiv13_64.key

Excluded

indiv14_64.key

Excluded

indiv15_64.key

Excluded

indiv16_64.key

Excluded

indiv17_64.key

Excluded

indiv18_64.key

Excluded

indiv19_64.key

Excluded

indiv20_64.key

Excluded

indiv21_64.key

Excluded

indiv22_64.key

Excluded

indiv23_64.key

Excluded

indiv24_64.key

Excluded

indiv25_64.key

Excluded

indiv26_64.key

Excluded

indiv27_64.key

Excluded

indiv28_64.key

Excluded

indiv29_64.key

Excluded

indiv30_64.key

Excluded

shell32.dll

Included

Fixing Your Code

Applications that require the WinXPSP2VersionLie compatibility fix perform version checks by using the GREATER THAN or EQUAL TO operators. However, in some cases, additional operating systems are supported through added equality comparisons and logical OR operators, which appear between each of these comparisons.

Except in situations where there are specific legal or business reasons to do so, operating system version checks should be done only with a GREATER THAN OR EQUAL TO operator, which will allow the software to work on subsequent versions of the operating system without API interception to include a version lie.

See Also

Concepts

Windows Vista and Windows 7 Operating Systems