Сделайте OpenSubKey () и другая Microsoft. Реестр Win32 функционирует пустой указатель возврата в 64-разрядных системах, когда 32-разрядные ключи реестра находятся под Wow6432node в реестре?
Я работаю над платформой поблочного тестирования, которая звонит в OpenSubKey () из библиотеки.NET.
Моя система разработки является Windows 7 64-разрядная среда с 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
.
Что мне делать?
Похоже, ваш проект модульного тестирования компилируется в 64-разрядную версию. В настройках Compile
вашего проекта модульного тестирования установите «Целевой ЦП» на x86
(вместо AnyCPU
).