The %ProgramFiles% registry value that a 32-bit application is writes is automatically changed to %ProgramFiles(x86)% on a computer that is running a 64-bit version of Windows Vista

Symptoms

When a 32-bit application is writing the %ProgramFiles% registry value on a computer that is running a 64-bit version of Windows Vista, Windows Vista automatically changes this string to %ProgramFiles(x86)%. This behavior cannot be changed.

This behavior also occurs in the 64-bit versions of Windows Server 2003 and of Windows XP.

Cause

This behavior occurs because %ProgramFiles% is a keyword for translation from a 64-bit operation to a 32-bit operation. This behavior enables a 32-bit application to work correctly with the %ProgramFiles% registry value when the application reads the %ProgramFiles% registry value later.

Resolution

To prevent Windows Vista from changing the %ProgramFiles% registry value that a 32-bit application writes, use one of the following methods.

Method 1

Pass a lower-cased string (for example, %programfiles%) or a capitalized string (for example, %COMMONPROGRAMFILES%). This method bypasses the redirection of the registry value.

Method 2

Use the KEY_WOW64_64KEY flag when you try to open or to create the value. For more information about the KEY_WOW64_64KEY flag, visit the following Microsoft Web site:

Status

This behavior is by design.

More Information

For more information about the WOW64 implementation, visit the following Microsoft Web site:
Properties

Article ID: 950407 - Last Review: Oct 22, 2008 - Revision: 1

Feedback