关于windows环境变量的问题。
在CMD窗口中set的值只是临时变量
通过在CMD窗口中reg add产生的值,修改了注册表,但是却没有实时生效。此时再打开一个CMD窗口,set显示所有环境变量,仍然没有生效。
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /t reg_sz /d "%~dp0jdk-1.6" /f
使用setx来生成环境变量,则可以实时生效!!!谨记
setx JAVA_HOME "%~dp0jdk-1.6" -m
---------------------------------------------------------------------------------
但是有些东西的环境变量仍然是不能实时生效的,只能重启:
MicroSoft的解释,为什么服务的环境变量不能实时生效
这是因为在本地系统帐户下运行的服务从 Services.exe 进程继承其环境。当 Windows 启动时,Services.exe 流程接收本地系统帐户的环境设置。由于 Services.exe 进程不使用 Windows 消息,它接收消息,以表明的值已更改 Windows 启动后,Services.exe 进程不会更新其环境设置。您不能强制确认对本地系统帐户的环境的动态更改正在运行的服务。