2012-05-13 99 views
2

在Windows上定义环境变量有两种方法。我看过使用'系统'变量和仅仅'环境'变量的例子。使用这种方法与其他方法有什么区别和后果?有关Windows的系统和环境变量有什么区别?

+1

他们可能都是指的是同样的东西:环境变量,但Windows有“全球”和“用户”环境变量。所有用户帐户都可以使用全局变量,但用户变量只能用于为其定义的特定用户。 –

+0

你在谈论Java中的“环境变量”,对吧? http://stackoverflow.com/questions/2863674/whats-the-diffrence-btw-system-property-and-system-environment-variable –

+0

我用我自己的答案张贴了这个问题,因为它最初使我困惑,我的答案可能会帮助其他人也有同样的困惑。 – thejartender

回答

2

像%SystemRoot%和%WinDir%这样的变量只是普通的环境变量。唯一的区别是它们的值来自:

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

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

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

1

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

定义系统变量需要系统重新启动才能更新系统。 如果使用命令提示符和环境选项,则只需使用新提示或新提示即可使用您定义的变量。

1

环境变量“评价”(即,它们都归于。)按照以下顺序:在AUTOEXEC.BAT 用户变量定义

系统变量 变量 每个进程具有包含集的环境块环境变量及其值。有两种类型的环境变量:用户环境变量(为每个用户设置)和系统环境变量(为每个人设置)。子进程默认继承其父进程的环境变量。

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

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

相关问题