使用* .reg文件在Windows上定义环境variables

我正在准备一套自动化在我们团队的计算机上安装某些应用程序的说明,并且作为该自动化的一部分,我需要添加用户环境variables和系统环境variables。 我们正在使用Windows XPWindows 7

我想用* .reg文件来添加这些variables。 所以我有几个问题:

用户环境variables是否正确:

[HKEY_CURRENT_USER\Environment]
"TEST"="ABC"'

系统环境variables是否正确:

[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]

我想更新PATH环境variables,我可以这样做:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"PATH"="C:\temp\;%PATH%"'

谢谢。

你基本上是正确的:用户和计算机环境的位置。 如果创buildREG_SZtypes的值,Windows将拒绝“扩展”其他可能引用的环境variables(即“FOO”=“%OTHER_VAR%\ bar”,因为REG_SZ将创build一个环境variablesFOO,string为“ OTHER_VAR%\ bar“作为其值)。 创build值作为REG_EXPANDtypes将导致Windows展开variables。 这是一个古怪的行为,因为REG_EXPANDtypes实际上并没有被registryAPI“扩展”。

“CurrentControlSet”是正在使用的ControlSetXXX实例的符号链接。 如果你用不同的硬件configuration文件启动,你会得到一个不同的“CurrentControlSet”。 如果您熟悉SYSV * nix,则可以将此机制松散地认为与inittab中的不同运行级别相似。

为了演示“CurrentControlSet”实际上是一个符号链接,只需在“HKLM \ System \ CurrentControlSet”下创build一个新的密钥,并在“… \ ControlSet001”下find它。 你会在那里find它。

最后,你想做什么w /添加到PATHvariables将无法正常工作。 在同一个密钥中不能有多个相同名称的registry值。 如果你创build一个名为“PATH”的值,那么新的“PATH”将不会有“%PATH%”展开。 附加到PATH是path如何存储在registry中的一个真正的缺点。 你将不得不将一个string附加到“PATH”值,如果你关心卸载,你需要parsing“PATH”variables,以便在用户卸载时退出。