Назад | Перейти на главную страницу

Переменные среды Windows: «Пользователь по умолчанию» против «Система»

Я изучаю переменные среды через класс WMI Win32_Environment. Согласно документации, переменная, не принадлежащая конкретному пользователю, может быть либо «Системной» переменной, либо переменной «Пользователь по умолчанию». У меня вопрос: в чем разница и как я буду использовать тот или иной?

Исследуя машину с Windows 2008, которая используется в качестве рабочей станции, я нахожу системные переменные, но не пользовательские переменные по умолчанию.

Системные переменные хранятся в:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Переменные <DEFAULT> хранятся в:

HKEY_USERS\.DEFAULT\Environment

Пользователь .DEFAULT не настройки по умолчанию, которые создаются при первом создании профиля пользователя. Скорее .DEFAULT - это среда HKEY_CURRENT_USER, используемая контекстом безопасности LocalSystem.

Вот некоторые предыстории из блога Рэймонда Чена, чтобы дать моему ответу дополнительную достоверность: http://blogs.msdn.com/oldnewthing/archive/2007/03/02/1786493.aspx > улыбка <

Я не совсем уверен в этом, но, скорее всего, системные переменные будут доступны все время, тогда как переменные пользователя по умолчанию применяются только до тех пор, пока пользователь не перезаписал их.

Не совсем уверен ... Я бы предположил, что системные переменные являются общесистемными, и их всего 1. Пользовательские переменные по умолчанию устанавливаются для каждого пользователя по умолчанию, но не зависят друг от друга. Таким образом, в службах терминалов, например, пользователь a может установить для своего tmpdir значение, отличное от пользователя b, но оба начинают с одного и того же значения, установленного пользователем по умолчанию.