通过注册表设置环境变量
大部分情况下我们都是通过Windows自带的环境变量编辑器来修改系统环境变量,也可以通过Windows系统提供的path,set两个命令临时修改。
使用系统编辑器修改环境变量最终会反映到注册表中保存,我们知道环境变量分为两种,用户变量,以及系统变量,其存储的位置分别位于:
系统变量:
1 2 3 | [HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment] [HKLM\SYSTEM\ControlSet002\Control\Session Manager\Environment] [HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment] |
用户变量:
1 | [HKCU\Environment] |
其中HKLM = HKEY_LOCAL_MACHINE,HKCU = HKEY_CURRENT_USER
ControlSet001/ControlSet002/CurrentControlSet 保存用于系统启动的重要配置信息,其中 CurrentControlSet 指向 ControlSet001 ,两者互相同步,每次针对两者中任意一个分支的修改都会立即复制到另外一个分支相对应的键值中。
当系统启动时,会使用其中一个分支的信息以尝试启动系统,这个就是 ControlSet001,如果启动成功,那么 ControlSet001 的信息会复制到 ControlSet002 中。如果启动失败,那么就不会发生这个复制过程。
当系统因某些原因无法启动时,我们通常会使用 “Using the Last Known Good Configuration” 来尝试启动系统,也就是“最后一次正确的配置”(启动时按住F8),这时系统使用的就是ControlSet002 分支的配置信息。
上面仅针对 Windows XP,其它版本的 Windows 系统应该都是类似的。
由于我编译 VI IMproved 每次都要为 Make_cyg.mak 设置环境变量,非常的麻烦,所以就查找了这方面的知识,把设置 Environment 的过程写入注册表文件中,每次只要导入即可,非常的方便。
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Environment] "PERL"="C:/Perl" "PERL_VER"="58" "DYNAMIC_PERL"="yes" "PYTHON"="C:/Python25" "PYTHON_VER"="25" "DYNAMIC_PYTHON"="yes" "RUBY"="C:/Ruby" "RUBY_VER"="18" "RUBY_VER_LONG"="1.8" "DYNAMIC_RUBY"="yes" "TCL"="C:/Tcl" "TCL_VER"="84" "DYNAMIC_TCL"="yes" "MZSCHEME"="C:/MzScheme" "MZSCHEME_VER"="370_000" "DYNAMIC_MZSCHEME"="yes" |