Не удается получить доступ к HKEY_CLASSES_ROOT \ Installer в Windows Server 2008 Enterprise - PullRequest
0 голосов
/ 07 февраля 2012

Буду признателен, если кто-нибудь поможет мне с проблемой, над которой я нахожусь.

Я написал простую программу на C #, чтобы проверить, существует ли следующий ключ HKEY_CLASSES_ROOT \ Installer \ UpgradeCodes \ product_upgrade_GUID

Возвращает true во всех Windows (если ключ существует), кроме Windows Server Enterprise 2008 x64 SP2, где он возвращает System.NullReferenceException, хотя ключ существует.На самом деле я получаю NullReferenceException, если я пытаюсь получить доступ к любому ключу в реестре \ Installer.Похоже, этот ключ установщика как-то защищен.То же самое происходит при попытке доступа к ключу «HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UpgradeCodes».

Следующий код должен возвращать «HKEY_CLASSES_ROOT \ Installer», но возвращает NullReferenceException:

RegistryKey rk = Registry.ClassesRoot.OpenSubKey(@"Installer");
return rk.ToString();

Кто-нибудь знает какие-либо ограничения для доступа к реестру установщика Windows?(UAC отключен и пользователь является администратором)

Спасибо

1 Ответ

1 голос
/ 07 февраля 2012

Скорее всего, вы запускаете 32-битный процесс в 64-битной системе, а перенаправитель реестра открывает вам 32-битное представление реестра. Где эти ключи не существуют.

Ваши опции включают в себя:

  • Открыть 64-битное представление реестра, используя перечисление RegistryView. Обратите внимание, что для этого требуется .net 4. Для более старых версий .net вам потребуется использовать p / invoke для чтения 64-битного представления реестра из 32-битного процесса.
  • Переключиться на 64-битный процесс.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...