Похоже, ваш проект unit testing компилируется до 64 бит. В настройках Compile
вашего проекта тестирования устройства установите «Целевой ЦП» на x86
(вместо AnyCPU
).
Если вам действительно нужно 32-битное приложение, вы можете получить доступ к 64-битным реестрам следующим образом:
RegistryKey localMachine64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey regKey = localMachine64.OpenSubKey(@"Software\MyCompany\MyApp\", false);
Да, у меня тоже такая же проблема с 64-разрядной версией Windows 7 и Visual Studio & nbsp; 2008 SP1. Но мое решение противоположное: переход от «x86» к «любому процессору» или «x64».
Кому может быть
В моем тесте, если вы используете AnyCpu для создания кода для работы с OpenSubKey и запускаете его на ОС x64, вы обнаружите, что не работаете над тем, где вы ожидаете.
Скажите, например: (Проверено в .net 4.5.2)
blockquote>RegistryKey rsk = Registry.LocalMachine.OpenSubKey("SOFTWARE");
, когда вы проверяете rsk.GetSubKeyNames ()
Я проверил это в debug, результат не является ни HKLM, ни HKCU, по крайней мере, я не могу сказать, что это такое (очень похоже на HKCU, но не то же самое).
blockquote>И самая известная проблема, которая может привести к этому:
DeleteSubKeyTree выкинет Argument Exception. если вы попробуете открыть подраздел перед удалением, это нормально, но когда вы делаете удаление, он скажет: «Эй, это не здесь ...
Так что будьте осторожны, теперь я никогда не буду использовать AnyCPU больше.