Я собираюсь применить свои умственные способности к отладке и предположить, что у вас есть (а) 64-битная операционная система и (б) Visual Studio 2010.
По умолчанию, когда вы создаете новый исполняемый проект в VS2010, он устанавливает параметры проекта для сборки на платформе x86. (Предыдущие версии Visual Studio были нацелены на «Любую платформу», в которой JIT использовался для кода x86 в 32-битной ОС и для кода x64 в 64-битной ОС. Но это вызывало другие головные боли, поэтому они изменили значение по умолчанию в VS2010.)
В 64-разрядной ОС 32-разрядные приложения имеют собственную виртуализированную копию HKLM \ Software . MS сделала это по причинам совместимости, чтобы 32-битные приложения не давали настройки 64-битным приложениям. Поэтому, когда ваше 32-разрядное приложение ищет HKLM \ Software, оно фактически получает HKLM \ Wow6432Node \ Software.
Четыре простых исправления для этого:
- Оставьте ваше приложение как 32-битное, но явно запросит 64-битный реестр . Это, наверное, самое простое решение.
- Когда вы заходите в RegEdit, создайте ключ в HKLM \ Wow6432Node \ Software.
- Если вы создаете ключ реестра из установщика, используйте 32-разрядный установщик. Затем он запишет то, что он видит как HKLM \ Software, что на самом деле является HKLM \ Wow6432Node \ Software.
- Измените параметры проекта для цели "Любая платформа" (в Параметры проекта> вкладка "Сборка"). Обязательно установите его как для отладки, так и для выпуска.