Доступ к ключу в реестре Windows LOCAL_MACHINE - PullRequest
1 голос
/ 06 октября 2010

Я сделал ключ в HKEY_LOCAL_MACHINE \ Software \ MyAppName (с помощью regedit (ive rebootet)), но когда я пытаюсь перечислить их все, MyAppName не показывает ... :( какие-либо подсказки?

rkey = Registry.LocalMachine.OpenSubKey("Software");
foreach (string subkey in rkey.GetSubKeyNames())
{
WriteToLogFile("subkey: " + subkey);
}

Ответы [ 2 ]

5 голосов
/ 06 октября 2010

Я собираюсь применить свои умственные способности к отладке и предположить, что у вас есть (а) 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.
  • Измените параметры проекта для цели "Любая платформа" (в Параметры проекта> вкладка "Сборка"). Обязательно установите его как для отладки, так и для выпуска.
0 голосов
/ 16 марта 2012

Не слишком придирчиво, но фактическое местоположение - HKLM \ SOFTWARE \ Wow6432Node .Все остальное, на что ответил Джо, было на месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...