【问题标题】:What is the difference between system and environment variables regarding Windows? [duplicate]关于 Windows,系统变量和环境变量有什么区别? [复制]
【发布时间】:2012-05-21 08:05:19
【问题描述】:

在 Windows 上定义环境变量有两种方法。我已经看到使用“系统”变量和仅使用“环境”变量的示例。使用一种方法与另一种方法相比有什么区别和后果?

【问题讨论】:

  • 它们可能都是指同一个东西:环境变量,但 windows 有“全局”和“用户”环境变量。全局变量适用于所有用户帐户,用户变量仅适用于为其定义的特定用户。
  • 您说的是Java 中的“环境变量”,对吧? stackoverflow.com/questions/2863674/…
  • 我用我自己的答案发布了这个问题,因为它最初让我感到困惑,我的回答可能会帮助其他有同样困惑的人。

标签: windows path environment-variables


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      我的理解是“系统”选项仅适用于管理员帐户。 选择此选项将为所有用户提供变量值。 非管理员用户的环境变量,并且可以用他们自己想要的值覆盖值。 第二个选项不会影响系统上的其他帐户。

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

      【讨论】:

        猜你喜欢
        • 2015-01-10
        • 2011-02-21
        • 2011-05-27
        • 1970-01-01
        • 2015-08-20
        • 2011-05-24
        • 2015-09-16
        • 2015-05-19
        • 1970-01-01
        相关资源
        最近更新 更多