Mat*_*ugh 7 scripting windows-installer login batch-file automated-deploy
我有一个MSI打包的应用程序,通过组策略对象(GPO)从Windows 2003域服务器部署到网络中的所有XP客户端计算机.
此应用程序为其配置读取两个环境变量(要与之通信的服务器IP),似乎我们还希望通过GPO样式设置或登录脚本将此配置推送到所有桌面.
在桌面网络中设置环境变量的最佳方法是什么?
Mat*_*ugh 14
我的研究表明有四种方法可以做到这一点.我从Microsoft Logon Script文档页面开始,并从那里散开.
登录批处理文件(.BAT)脚本只是CMD窗口的临时实例,一旦登录窗口关闭,其中设置的环境变量就会消失.
set MYVAR=MyValue
Run Code Online (Sandbox Code Playgroud)
因上述原因不起作用.
所以,或者,我可以尝试通过直接写入注册表来设置变量,就像系统环境变量一样:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MYVAR /t REG_EXPAND_SZ /d MyValue
Run Code Online (Sandbox Code Playgroud)
或者像这样的用户环境变量:
reg add HKCU\Environment /v MYVAR /t REG_EXPAND_SZ /d MyValue
Run Code Online (Sandbox Code Playgroud)
这里的缺点是,虽然写入注册表的变量在下次登录之前都不会被读取.在用户重新登录之前,新的CMD窗口不会显示任何痕迹.
使用Visual Basic脚本(VBS)登录脚本,您可以使用更加编程的方法来访问环境变量.这看起来像我最可行的方法. 此示例将附加到PATH的末尾.
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment("SYSTEM")
WshEnv("Path") = WshEnv("Path") & ";M:\DB\whatever\"
Run Code Online (Sandbox Code Playgroud)
这个例子只是设置变量.
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment("SYSTEM")
WshEnv("MYVAR") = "MyNewValue"
Run Code Online (Sandbox Code Playgroud)
这种方法产生的变量可以通过CMD窗口立即获得.批处理文件注册表写入不需要重新启动.
ADM文件是一种向组策略编辑器公开设置的自定义功能的方法.在域控制器上安装和显示它们似乎很棘手,所以我跳过了这个选项.
有关ADM文件位置的Microsoft支持TechNet参考.
另一篇关于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 ----
Run Code Online (Sandbox Code Playgroud)
Windows Server 2008 h 作为一项称为组策略首选项的环境扩展的新功能.它允许您方便地设置否则需要复杂的批处理脚本.公开的新项目包括注册表值,环境变量等. 这里提供了快速操作指南.
我无法使用此选项,因为我的客户端没有Windows Server 2008.
请根据您作为Windows管理员的经验告诉我哪些最有效,以及为什么.我只是一名桌面开发人员,需要管理员的洞察力.
为什么不能将此配置嵌入到 MSI 的属性表中(构建后,使用转换),然后从那里读取?这将更有意义......启动 Orca,添加几个属性,保存转换并通过应用转换的 GPO 进行部署。
编辑:只需重新阅读这个问题...然后将设置部署到注册表并让应用程序从那里读取,而不是设置环境变量。从管理员的角度来看,为一个应用程序设置全局环境变量没有意义。
| 归档时间: |
|
| 查看次数: |
43867 次 |
| 最近记录: |