在 Windows 上定义环境变量有两种方法。我已经看到使用“系统”变量和仅使用“环境”变量的示例。使用一种方法相对于另一种方法有什么区别和后果?
3 回答
像 %SystemRoot% 和 %WinDir% 这样的变量只是普通的环境变量。唯一的区别是它们的值来自哪里:
- 系统环境变量是预定义的,由安装程序确定。 这篇 Technet 文章“在 Cmd.exe 中使用环境变量”部分列出了它们的名称,请注意它已过时且不涵盖 64 位特定变量
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 注册表项中定义的可配置系统范围环境变量,对任何用户都有效
- HKEY_CURRENT_USER\Environment 注册表项中定义的可配置用户特定环境变量。
有效的过程环境是这三个来源的合并。
后两个注册表项可以从控制面板+系统小程序,环境变量按钮进行编辑。请注意,使更改生效可能需要注销 + 登录,因此该过程从环境的新副本开始,而不是从其父进程继承的陈旧副本。
环境变量按以下顺序“评估”(即,它们被归因):
系统变量 autoexec.bat 中定义的变量 用户变量 每个进程都有一个环境块,其中包含一组环境变量及其值。环境变量有两种类型:用户环境变量(为每个用户设置)和系统环境变量(为每个人设置)。子进程默认继承其父进程的环境变量。
命令处理器启动的程序继承命令处理器的环境变量。
环境变量指定文件的搜索路径、临时文件的目录、特定于应用程序的选项和其他类似信息。系统为每个用户和计算机维护一个环境块。系统环境块代表特定计算机的所有用户的环境变量。用户的环境块代表系统为该特定用户维护的环境变量,包括系统环境变量集。
我的理解是“系统”选项仅适用于管理员帐户。选择此选项将为所有用户提供变量值。非管理员用户的环境变量,并且可以用他们自己想要的值覆盖值。第二个选项对系统上的其他帐户没有影响。
定义系统变量需要重新启动系统以更新您的系统。如果使用命令提示符和环境选项,您只需要一个新的或新的提示符来使用您定义的变量。