有关Windows的系统和环境变量有什么区别?

时间:2012-05-13 16:02:59

标签: windows path environment-variables

在Windows上定义环境变量有两种方法。我见过使用'系统'变量和仅仅是'环境'变量的例子。使用这种方法比另一种方法有什么不同和后果?

3 个答案:

答案 0 :(得分:3)

%SystemRoot%和%WinDir%等变量只是普通的环境变量。唯一的区别在于它们的价值来自:

  • 系统环境变量是预定义的,由设置决定。 This Technet article,“在Cmd.exe中使用环境变量”部分列出了它们的名称, 请注意它已过期,并未涵盖64位特定变量
  • HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment注册表项中定义的可配置系统范围的环境变量,对任何用户都有效
  • HKEY_CURRENT_USER \ Environment注册表项中定义的可配置用户特定环境变量。

有效的流程环境是这三个来源的合并。

可以从“控制面板+系统”小程序“环境变量”按钮编辑后两个注册表项。请注意,使更改生效可能需要注销+登录,因此该过程以环境的新副本开始,而不是从其父进程继承的过时副本。

答案 1 :(得分:2)

我的理解是'system'选项仅适用于管理员帐户。 选择此选项将为所有用户提供变量值。 非管理员用户的环境变量,可以使用自己的期望值覆盖值。 第二个选项对系统上的其他帐户没有影响。

定义系统变量需要重新启动系统以更新系统。 如果使用命令提示符和环境选项,则只需要一个全新或新的提示来使用您定义的变量。

答案 2 :(得分:2)

环境变量按以下顺序“评估”(即它们被归属):

系统变量 autoexec.bat中定义的变量 用户变量 每个进程都有一个包含一组环境变量及其值的环境块。有两种类型的环境变量:用户环境变量(为每个用户设置)和系统环境变量(为每个人设置)。子进程默认继承其父进程的环境变量。

命令处理器启动的程序继承命令处理器的环境变量。

环境变量指定文件的搜索路径,临时文件的目录,特定于应用程序的选项以及其他类似信息。系统为每个用户维护一个环境块,为计算机维护一个环境块。系统环境块表示特定计算机的所有用户的环境变量。用户的环境块表示系统为该特定用户维护的环境变量,包括系统环境变量集。