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

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

Могу ли я получить доступ ко всем HKEY_CURRENT_USER (приложение в настоящее время обращается к HKEY_LOCAL_MACHINE) без прав администратора?

Ответ 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 в другом месте.

Ответ 2

Да, вы должны иметь возможность писать в любое место в HKEY_CURRENT_USER без привилегий администратора. Но это фактически частный магазин, который никто другой пользователь на этом компьютере не сможет получить доступ, поэтому вы не можете размещать какую-либо общую конфигурацию там.