Do OpenSubKey() and other Microsoft.Win32 registry functions return null on 64-bit systems when 32-bit registry keys are under Wow6432node in the registry?
I'm working on a unit testing framework that makes a call to OpenSubKey() from the .NET library.
My development system is a Windows 7 64-bit environment with Visual Studio 2008 SP1 and the Windows 7 SDK installed.
The application we're unit testing is a 32-bit application, so the registry is virtualized under HKLMSoftwareWow6432node
. When we call:
Registry.LocalMachine.OpenSubKey( @"SoftwareMyCompanyMyApp" );
Null is returned, however explicitly stating to look here works:
Registry.LocalMachine.OpenSubKey( @"SoftwareWow6432nodeMyCompanyMyApp" );
From what I understand this function should be agnostic to 32-bit or 64-bit environments and should know to jump to the virtual node.
Even stranger is the fact that the exact same call inside a compiled and installed version of our application is running just fine on the same system and is getting the registry keys necessary to run; which are also being placed in HKLMSoftwareWow6432node
.
What should I do?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…