Using the Win2K3RTMVersionLie Fix

Applies To: Windows 7, Windows Vista

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

Win2K3RTMVersionLie

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 Win2K3RTMVersionLie returns the Windows Server® 2003 version information to the application, regardless of the actual operating system version that is running on the computer, allowing the application to continue running.

Investigating the Issue

Application-related issues that can be resolved by applying the Win2K3RTMVersionLie 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 Win2K3RTMVersionLie fix.

API Description

GetVersionExA

Returns the LPOSVERSIONINFOA structure, with the following values:

  • dwMajorVersion = 5

  • dwMinorVersion = 2

  • dwBuildNumber = 3790

  • dwPlatformId = VER_PLATFORM_WIN32_NT = 2

  • szCSDVersion = ""

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

  • wServicePackMajor = 0

  • wServicePackMinor = 0

GetVersionExW

Returns the LPOSVERSIONINFOW structure, with the following values:

  • dwMajorVersion = 5

  • dwMinorVersion = 2

  • dwBuildNumber = 3790

  • dwPlatformId = VER_PLATFORM_WIN32_NT = 2

  • szCSDVersion = ""

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

  • wServicePackMajor = 0

  • wServicePackMinor = 0

GetVersion

Returns the required DWORD value of 0x0ECE0205

RtlGetVersion

Returns a PRTL_OSVERSIONINFOW structure, with the following values:

  • dwMajorVersion = 5

  • dwMinorVersion = 2

  • dwBuildNumber = 3790

  • dwPlatformId = VER_PLATFORM_WIN32_NT = 2

  • szCSDVersion = ""

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

  • wServicePackMajor = 0

  • wServicePackMinor = 0

Included and Excluded Modules

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

Module Name Included or Excluded

msvcrt.dll

Excluded

msvcirt.dll

Excluded

oleaut32.dll

Excluded

kernel32.dll

Excluded

shell32.dll

Included

Fixing Your Code

Applications that require the Win2K3RTMVersionLie 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