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:
Right-click the problematic application's executable (.exe) file, and then click Properties.
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:
If passed a LPOSVERSIONINFOEXA structure, it also includes the following values:
|
GetVersionExW |
Returns the LPOSVERSIONINFOW structure, with the following values:
If passed a LPOSVERSIONINFOEXW structure, it also includes the following values:
|
GetVersion |
Returns the required DWORD value of 0x0A280105 |
RtlGetVersion |
Returns the PRTL_OSVERSIONINFOW structure, with the following values:
If passed a RTL_OSVERSIONINFOEXW structure, it also includes the following values:
|
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.