我有一个 MSI 打包的应用程序,它通过组策略对象 (GPO) 从 Windows 2003 域服务器部署到网络中的所有 XP 客户端计算机。
此应用程序为其配置读取两个环境变量(与哪些服务器 IP 通信),似乎我们还希望通过 GPO 样式设置或登录脚本将此配置推送到所有桌面。
跨桌面网络设置环境变量的最佳方法是什么?
最佳答案
我的研究表明有四种方法可以做到这一点。我从 Microsoft Logon Script documentation pages and fanned out from there 开始.
登录脚本批处理文件
window 服务器 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 文件
window 服务器 2000、2003、2008
使用 Visual Basic 脚本 (VBS) 登录脚本,您可以使用更具编程性的方法来访问环境变量。这看起来是我最可行的方法。 This example would append to the end of PATH .
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 文件
window 服务器 2000、2003、2008
ADM 文件是一种向组策略编辑器公开设置的自定义功能的方法。让它们在域 Controller 上安装和可见似乎很棘手,所以我跳过了这个选项。
Microsoft Support TechNet Reference on ADM File Locations.
Another article about ADM files and using them to set Registry settings.
Tom's Hardware on ADM Files.
---- 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)
window 服务器 2008
Windows Server 2008 小时 as a new feature称为Environment Extensions for the Group Policy Preferences .它允许您方便地设置原本需要的复杂批处理脚本。公开的新项目包括注册表值、环境变量等。 A quick how-to guide is available here .
我无法使用此选项,因为我的客户端没有 Windows Server 2008。
概括
请根据您作为 Windows 管理员的经验告诉我哪些方法最有效以及为什么。我只是一个桌面开发人员,需要管理员的洞察力。
关于scripting - 可以通过 Windows 登录脚本设置系统环境变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/588321/