Какой доступ к реестру вы можете получить без прав администратора?

StackOverflow https://stackoverflow.com/questions/53135

Вопрос

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

Могу ли я получить доступ ко всем 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 без прав администратора.Но фактически это частное хранилище, к которому ни один другой пользователь на этом компьютере не сможет получить доступ, поэтому вы не можете поместить туда какую-либо общую конфигурацию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top