Как прочитать ветку реестра HKEY_LOCAL_MACHINE в Vista? - PullRequest
5 голосов
/ 18 мая 2009

Настройки приложения хранятся в ветке HKEY_LOCAL_MACHINE \ SOFTWARE \ MyCompany. Настройки должны быть одинаковыми для разных пользователей, и именно поэтому настройки не указаны в HKEY_CURRENT_USER. Значения реестра только для чтения во время использования приложения.

Теперь в Windows Vista и из-за UAC вы больше не можете использовать следующий код для чтения значений реестра:

RegistryKey myKey = Registry.LocalMachine.CreateSubKey
        ("SOFTWARE\\MyCompany\\MyAppName");

Как мне прочитать значения из ветки LocalMachine в моем коде (C #)?

1 Ответ

7 голосов
/ 18 мая 2009

Проблема в том, что вы пытаетесь создать ключ, а не читать его. Вы должны уметь читать значения из HKLM в Vista, если вы используете соответствующий API.

RegistryKey myKey = Registry.LocalMachine.OpenSubKey(
  @"Software\MyCompany\MyAppName", 
  false);

Обратите внимание на ложный параметр в приведенном выше. Это приводит к открытию ключа в режиме только для чтения. Это настройка по умолчанию для OpenSubKey, но я предпочитаю быть явным (в основном потому, что не могу вспомнить значение по умолчанию).

...