What is going on when you run 32-bit applications on 64-bit Windows? Most of us know there is this ‘C:\Program Files (x86)\’ folder where 32-bit application are installed, but did you also know something similar is going on the registry?
Wow6432Node
When a 32-bit application, running on 64-bit Windows is querying the registry for the ‘HKCU\SOFTWARE\ORACLE’ key, it seems to go fine. But when the ‘HKLM\SOFTWARE\ORACLE’ key is queried, that is where the trouble starts… It seems the call is now being redirected to ‘HKLM\SOFTWARE\Wow6432Node\ORACLE’.
Also when ‘HKCU \SOFTWARE\ORACLE’ is queried, but does not exists, you will also be redirected to ‘HKLM\SOFTWARE\Wow6432Node\ORACLE’.
Ok, if the application also writes to this location there is nothing to worried about, Windows also does redirect writing to ‘HKLM\SOFTWARE\Wow6432Node\’.
Registry .reg file
But what if you update the registry with a .reg file? This redirection does not occur, the key will end up where you put it. So, you insert ‘HKLM\SOFTWARE\ORACLE\ORACLE_HOME’ with a .reg file, but the 32-bit (Oracle) application still reads it from the ‘HKLM\SOFTWARE\Wow6432Node\ORACLE\ORACLE_HOME’ redirected location. Now there is a mismatch, and the ORACLE_HOME is not set. This will leave you will all kinds of errors with NLS settings, Oracle Homes not set etc, etc…
Process Monitor
I discovered this problem when running Process Monitor from Sysinternals to trace the registry calls for a 32-bit Oracle application on Windows Server 2008 (64-bit). It could not load the Oracle libraries, so I assumed incorrect environment settings. These were ok and tried to figure out if it could be in the registry… and so it did!
When running Process Monitor, it will immediately start monitoring when started, so stop it as quickly as possible with Ctrl-E. It does collect a lot of information!
When you run Process Monitor on a 64-bit system, you can’t open the saved .pml on a 32-bit system…
Workaround?
I have exported the registry keys it wanted to read and updated the .reg file to insert it back to the ‘Wow6432Node’ redirected ones… Problem ‘solved’.
NotesThe following registry keys have been abbreviated:
HKCU = HKEY_CURRENT_USER
HKLM = HKEY_LOCAL_MACHINE



{ 4 comments… read them below or add one }
Ii possible to run ORACLE EXPRESS which run only on 32bit on
W2008 x64.
Thanks for anwer.
Dear dodo,
According to the Oracle XE installation manual, only 32-bit Windows XP, 2000 SP4 and Server 2003 are supported.
Due to limitations of Oracle XE, you will not gain advantage on a 64bit Operating System.
From Oracle forum pages, I see different results of installing Oracle XE on Win2k8 x64, some fail, some don’t. I would expect you could have more problems with the Windows Server 2008 version, not the x64 – 32 bits combination.
Only Oracle Database 10g Release 2 (10.2.0.4.0) and Oracle Database 11g Release 1 (11.1.0.7.0) are supported version for Windows Server 2008 x64.
Oracle XE installation manual:
http://download.oracle.com/docs/cd/B25329_01/doc/install.102/b25143/toc.htm
Thank you for sharing this information
MfG
WolfgangS
Additional information:
The same problem occurs when a Perl script (with Perl 5.6.1 – probably other version too) creates registry entires.
MfG
WolfgangS