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.
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.
To prevent Windows Vista from changing the %ProgramFiles% registry value that a 32-bit application writes, use one of the following methods.
Pass a lower-cased string (for example, %programfiles%) or a capitalized string (for example, %COMMONPROGRAMFILES%). This method bypasses the redirection of the registry value.
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:
Windows Vista Enterprise 64-bit Edition, Windows Vista Home Basic 64-bit Edition, Windows Vista Home Premium 64-bit Edition, Windows Vista Ultimate 64-bit Edition, Windows Vista Business 64-bit Edition, Microsoft Windows XP Professional 64-Bit Edition (Itanium), Microsoft Windows Server 2003, Datacenter x64 Edition, Microsoft Windows Server 2003, Enterprise x64 Edition, Microsoft Windows Server 2003, Standard x64 Edition