Какой доступ к реестру вы можете получить без прав администратора?
-
09-06-2019 - |
Вопрос
Я знаю, что мы больше не должны использовать реестр для хранения данных приложения, но при обновлении устаревшего приложения (и желании внести наименьшее количество изменений), какие кусты реестра разрешено использовать не администраторам?
Могу ли я получить доступ ко всем HKEY_CURRENT_USER
(приложение, к которому в данный момент осуществляется доступ HKEY_LOCAL_MACHINE
) без прав администратора?
Решение
Как правило, пользователь, не являющийся администратором, имеет такой доступ к реестру:
Чтение / Запись в:
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 в других местах.
Другие советы
Да, вы должны иметь возможность писать в любое место под HKEY_CURRENT_USER без прав администратора.Но фактически это частное хранилище, к которому ни один другой пользователь на этом компьютере не сможет получить доступ, поэтому вы не можете поместить туда какую-либо общую конфигурацию.