Могут ли системные переменные среды быть установлены с помощью сценариев входа в систему Windows?
У меня есть MSI-упакованное приложение, которое развертывается через объекты групповой политики (GPO) с сервера домена Windows 2003 на все клиентские машины XP в сети.
Это приложение считывает две переменные среды для своей конфигурации (какой сервер IPs для разговора), и кажется, что мы также хотели бы нажать эту конфигурацию через настройку стиля GPO или сценарий входа на все рабочие столы.
каков наилучший подход для установки переменных среды через сеть настольных компьютеров?
3 ответов
Почему вы не можете встроить эту конфигурацию в таблицу свойств MSI (после сборки, используя преобразование), а затем прочитать оттуда? Это имело бы гораздо больше смысла... запустите Orca, добавьте пару свойств, сохраните преобразование и разверните через GPO с примененным преобразованием.
Edit: просто перечитайте этот вопрос... затем разверните параметры в реестре и прочитайте приложение оттуда, а не устанавливая переменные среды. Установка глобальных переменных среды для одного приложение не имеет смысла для точки зрения администраторов.
мои исследования говорят, что существует четыре способа сделать это. Я начал с Microsoft Logon script страницы документации и веером оттуда.
Пакетный Файл Сценария Входа
Windows Server 2000, 2003, 2008
логин пакетный файл (.Bat) скрипты - это всего лишь временный экземпляр окна CMD, и переменные среды, установленные там, исчезают, как только окно входа в систему закрывается.
set MYVAR=MyValue
не будет вышеупомянутая причина.
таким образом, в качестве альтернативы, я могу попытаться установить переменную путем прямой записи в реестр, например, для системной переменной среды:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MYVAR /t REG_EXPAND_SZ /d MyValue
или для переменных среды пользователя, например:
reg add HKCU\Environment /v MYVAR /t REG_EXPAND_SZ /d MyValue
недостатком здесь является то, что переменные, хотя и записанные в реестр, не читаются до следующего входа в систему для всех, кого я вижу. Новое окно CMD не показывает никаких следов их, пока пользователь повторно логи-в.
войти скрипт WSH VBS файл
Windows Server 2000, 2003, 2008
С помощью сценария входа Visual Basic Script (VBS) можно использовать более программный метод для доступа к переменным среды. Это выглядит как мой самый жизнеспособный подход. этот пример будет добавлен в конец пути.
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment("SYSTEM")
WshEnv("Path") = WshEnv("Path") & ";M:\DB\whatever\"
этот пример просто задать переменную.
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment("SYSTEM")
WshEnv("MYVAR") = "MyNewValue"
этот подход дает переменные, которые сразу доступны через окно CMD. Перезагрузка не требуется, как пишет реестр пакетных файлов.
файл ADM
Windows Server 2000, 2003, 2008
файлы ADM-это способ предоставления пользовательских функций параметров редактору групповой политики. Кажется сложным установить их и увидеть на контроллере домена, поэтому я перескакиваю через эту опцию.
Поддержка Microsoft Ссылка TechNet на расположение файлов ADM.
еще одна статья о файлах ADM и их использовании для установки параметров реестра.
оборудование Тома в файлах ADM.
---- set.adm ----
CLASS MACHINE
CATEGORY "Environment"
POLICY "Self dfined variables"
KEYNAME "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
PART "Set MyVar1 =" EDITTEXT
DEFAULT "MyValue1"
VALUENAME MyVar1 ; EXPANDABLETEXT
; add expandabletext if it can contain Variables itself
END PART
END POLICY
END CATEGORY
---- set.adm ----
предпочтения групповой политики (GPP)
Windows Server 2008
Windows Server 2008 hновая функция назвал расширения среды для предпочтений групповой политики. Это позволяет вам чтобы удобно установить, что в противном случае требуется сложные пакетные скрипты. Новые элементы, предоставляемые включают значения реестра, переменные среды и многое другое. краткое руководство доступно здесь.
Я не могу использовать эту опцию, потому что у моих клиентов нет Windows Server 2008.
резюме
пожалуйста, скажите мне на основе вашего опыта в качестве администраторов Windows, какой из них работает лучше всего и почему. Я просто рабочий стол разработчик, и нужна проницательность администратора.
вы всегда можете установить переменную среды через свой скрипт входа в систему. Конечно!
вот как мы делаем это:
Не используйте "set", поскольку он не берется в пользовательскую среду. Переменные, заданные с помощью "set", действительны только во время выполнения сценария входа в систему.
использовать "setx".
Итак, чтобы установить переменную в условиях
setx MYSPECIALVAR THIS_IS_THE_VALUE
setx Softwaresource \\this\is\the\value\of\the\variable
(Примечание: нет =
знак, как это было бы в случае с set MYSPECIALVAR=THIS_IS_THE_VALUE
)
если пользователь имеет права администрирования на ПК, вы также можете установить переменные в глобальной системе-envrionment с помощью
setx MYSPECIALVAR THIS_IS_THE_VALUE /m
(так мы развертываем переменные на ПК с помощью installationscripts и административных прав)