Возвращает ли OpenSubKey () и другие функции реестра Microsoft.Win32 значение null в 64-разрядных системах, если 32-разрядные ключи реестра находятся в разделе Wow6432node в реестре?
Я работаю над структурой модульного тестирования, которая вызывает OpenSubKey () из библиотеки .NET.
Моя система разработки представляет собой 64-разрядную среду Windows 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-разрядных сред и должна знать, что нужно переходить на виртуальный узел.
Еще более странным является тот факт, что точно такой же вызов внутри скомпилированной и установленной версии нашего приложения прекрасно работает в той же системе и получает ключи реестра, необходимые для запуска; которые также находятся в HKLM\Software\Wow6432node
.
Что мне делать?