Разница: переменные среды и ключи реестра - PullRequest
1 голос
/ 27 августа 2011

В чем разница между ключом реестра и переменной среды?

Я думаю, что переменные среды - это только то, что можно найти в ОС Windows?И я слышал, что их очень легко изменить, поэтому не стоит им доверять?Ключи реестра так же легко изменить?

Хранятся ли ключи реестра в кернале?

Мой самый важный вопрос: я знаю, что переменные окружения позволяют мне узнать путь к% APPDATA,имя текущего пользователя, путь к программным файлам, версия операционной системы Windows и т. д. НО в ключах реестра также содержатся данные такого типа - могу ли я также узнать эту информацию, посмотрев ключи реестра?

Ответы [ 3 ]

4 голосов
/ 27 августа 2011

Оба используются для настройки программ. Самое большое отличие состоит в том, что переменные среды хранятся в памяти, а ключи реестра хранятся в файле. Что объясняет многие их свойства:

  • Значения переменных среды теряются, как только процесс, который их записывает, завершается.
  • Процесс не может обновить значения переменных среды другого процесса. За одним важным исключением: среда для процесса создается процессом, который его запускает. Аргумент lpEnvironment класса CreateProcess (). Вот как родительский процесс настраивает дочерние процессы, которые он запускает.
  • Пространство для хранения переменных среды строго ограничено, максимум 64 КБ.
  • Переменные среды не имеют пользовательской области видимости, как ключи реестра, они будут иметь одинаковое значение для любого пользователя, если только родительский процесс не позаботится об этом явно.
  • Значения переменных среды не могут быть защищены.
  • Быстрый доступ к переменным среды. С оговоркой, что поиск переменной является операцией O (n), поскольку у них нет ни иерархической организации, ни индекса. Ограниченный размер среды делает это ненужным. Однако Windows сильно оптимизирует доступ к ключам реестра.
2 голосов
/ 27 августа 2011

В чем разница между ключом реестра и средой Переменный

Ключи реестра постоянно хранятся в специальном файле. Переменные среды хранятся в памяти процесса, но некоторые из них (системные переменные среды) загружаются из реестра при запуске процесса.

2 голосов
/ 27 августа 2011

Еще одно важное отличие:

Переменные среды загружаются в процесс при его запуске.Поэтому, если вы измените их после запуска процесса, процесс не увидит этого.

И о вашем другом вопросе:

Переменные пользователя: HKEY_CURRENT_USER \ Environment

Системные переменные: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment

Статья о системных переменных по умолчанию:

http://vlaurie.com/computers2/Articles/environment.htm

...