В общем, пользователь не администратор имеет такой доступ к реестру:
чтения/записи:
Только для чтения:
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 в другом месте.
«Я знаю, что мы больше не должны использовать реестр для хранения данных приложения» - я не думаю, что это полностью верно. Реестр имеет много преимуществ по сравнению с файловой системой, и я не знаю никаких указаний от Microsoft прекратить использовать его в разработке приложений. Вероятно, вы не должны использовать его для хранения больших объемов данных приложения, но это хорошее место для хранения настроек и данных конфигурации. – syplex 2017-03-02 18:52:47