Устанавливает ли OpenSubKey() и другие функции реестра Microsoft.Win32 значение null в 64-разрядных системах, когда 32-разрядные разделы реестра находятся под Wow6432node в реестре?
Я работаю над модульной структурой тестирования, которая вызывает вызов OpenSubKey() из библиотеки .NET.
Моя система разработки представляет собой 64-битную среду Windows и nbsp; 7 с Visual Studio 2008 SP1 и установленный Windows 7 SDK.
Приложение, которое мы тестируем, представляет собой 32-разрядное приложение, поэтому реестр виртуализирован под HKLM\Software\Wow6432node
. Когда мы вызываем:
Registry.LocalMachine.OpenSubKey( @"Software\MyCompany\MyApp\" );
Возвращается нуль, однако явно указано, что здесь работает:
Registry.LocalMachine.OpenSubKey( @"Software\Wow6432node\MyCompany\MyApp\" );
Из того, что я понимаю, эта функция должна быть агностической для 32-разрядных или 64-разрядных сред и должна знать, чтобы перейти к виртуальному node.
Еще более странным является тот факт, что тот же самый вызов внутри скомпилированной и установленной версии нашего приложения работает очень хорошо в той же системе и получает необходимые ключи реестра; которые также помещаются в HKLM\Software\Wow6432node
.
Что мне делать?