Я готовлю набор инструкций по автоматизации установки некоторых приложений на компьютеры нашей команды, и как часть этой автоматизации мне нужно добавить переменные пользовательской среды и переменные системной среды. Мы используем оба Windows XP и Windows 7
Я хотел сделать это с помощью файла * .reg, который будет добавлять эти переменные. Итак, у меня есть несколько вопросов:
[HKEY_CURRENT_USER\Environment]
"TEST"="ABC"'
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"TEST2"="XYZ"'
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
и [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"PATH"="C:\temp\;%PATH%"'
Спасибо.
Вы в основном правы относительно местоположения пользователя и компьютерной среды. Если вы создаете значения типа REG_SZ, Windows откажется «расширять» другие переменные среды, которые вы можете в них ссылаться (например, «FOO» = «% OTHER_VAR% \ bar», поскольку REG_SZ создаст переменную среды FOO с буквальной строкой «%»). OTHER_VAR% \ bar "в качестве значения). Создание значений типа REG_EXPAND приведет к тому, что Windows развернет переменные. Это странное поведение, потому что типы REG_EXPAND на самом деле не «расширяются» API реестра.
CurrentControlSet - это символическая ссылка на используемый экземпляр ControlSetXXX. Если вы загружаетесь с другим профилем оборудования, вы получите другой «CurrentControlSet». Если вы знакомы с SYSV * nix, этот механизм можно в общих чертах сравнить с разными уровнями выполнения в inittab.
Чтобы продемонстрировать, что «CurrentControlSet» на самом деле является символической ссылкой, просто создайте новый ключ в «HKLM \ System \ CurrentControlSet» и найдите его в «... \ ControlSet001». Вы найдете это там.
Наконец, то, что вы хотите сделать с добавлением к переменной PATH, не сработает. Вы не можете иметь несколько значений реестра в одном разделе с одним и тем же именем. Если вы создаете значение с именем «ПУТЬ», тогда не будет «% ПУТЬ%» для нового «ПУТЬ» для расширения. Добавление к PATH - реальный недостаток того, как путь хранится в реестре. Вам нужно будет добавить строку к значению «PATH», и, если вы заботитесь об удалении, вам нужно будет проанализировать переменную «PATH», чтобы вернуть ее, когда пользователь удалит.