Ответ 1
В общем, пользователь, не являющийся администратором, имеет этот доступ к реестру:
Чтение/запись на:
-
HKEY_CURRENT_USER
Только для чтения:
-
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% приложений (например, в нем содержится текущий список устройств Plug-and-Play). Если вам что-то нужно, большая часть информации доступна через поддерживаемые API в другом месте.