Как правило, пользователь без прав администратора имеет доступ к реестру:
Чтение / запись на:
Только чтение:
HKEY_LOCAL_MACHINE
HKEY_CLASSES_ROOT
(это просто ссылка на HKEY_LOCAL_MACHINE\Software\Classes
)
Некоторые из этих разрешений можно менять по ключам, но это крайне редко. Вам не нужно беспокоиться об этом.
Для ваших целей ваше приложение должно записывать настройки и конфигурацию в HKEY_CURRENT_USER
. Каноническое место где-нибудь в пределах HKEY_CURRENT_USER\Software\YourCompany\YourProduct\
В HKEY_LOCAL_MACHINE
вы можете хранить глобальные настройки (для всех пользователей). Это очень редко нужно делать, и вам следует избегать этого. Проблема в том, что любой пользователь может «читать» их, но только администратор (или расширение вашей программы установки / установки) может «устанавливать» их.
Другой распространенный источник проблем: ваше приложение не должно записывать что-либо в каталоги Program files
или Windows
. Если вам нужно записать в файлы, есть несколько вариантов под рукой; описание всех из них будет более продолжительным обсуждением. Все опции заканчивают тем, что записывают в подпапку или другую под %USERPROFILE%
для рассматриваемого пользователя.
Наконец, ваше приложение должно остаться вне HKEY_CURRENT_CONFIG
. Этот куст содержит конфигурацию оборудования, конфигурации служб и другие элементы, которые 99,9999% приложений не должны смотреть (например, он содержит текущий список подключаемых устройств). Если вам что-то понадобится, большая часть информации доступна через поддерживаемые API в других местах.