Какой доступ к реестру вы можете получить без прав администратора? - PullRequest
47 голосов
/ 10 сентября 2008

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

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

Ответы [ 2 ]

78 голосов
/ 10 сентября 2008

Как правило, пользователь без прав администратора имеет доступ к реестру:

Чтение / запись на:

  • 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% приложений не должны смотреть (например, он содержит текущий список подключаемых устройств). Если вам что-то понадобится, большая часть информации доступна через поддерживаемые API в других местах.

3 голосов
/ 10 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...