Я изучаю переменные среды через класс 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, но оба начинают с одного и того же значения, установленного пользователем по умолчанию.