为什么我的 PATH 环境变量与命令提示符不同?

为什么我的 PATH 环境变量与命令提示符不同?

一些重要的背景信息:我的公司有一个通用的登录 VBS 脚本,该脚本会在登录时修改用户 PATH 环境变量,并允许我运行依赖于映射的 DFS 文件共享的软件。我最近还在 Windows 7 Enterprise 计算机上安装了 Windows Powershell SDK,并尝试从 Powershell 命令行修改我的 PATH 环境变量。

在此之后,我注意到我无法再运行与这些登录 PATH 修改相对应的应用程序,并且环境变量编辑器 PATH 的设置与我'echo %PATH%'从命令提示符发出时显示的内容不同。

例如(简化),从环境变量编辑器(My Computer properties -> Advanced System Settings -> Environment Variables)我有

 C:\MyDir\; C:\MyOtherDir

而当我'echo %PATH%'从命令提示符执行时,我得到了:

 C:\MyDir\

其他人是否遇到过类似的问题?有解决方案吗?当我在 Google 上搜索帮助时,我找到了以下信息:

(相关?)StackOverflow 主题

我突然想到,如果登录脚本是由我的 Explorer.exe 环境以外的其他东西启动的,那么这就是问题所在。但是,当我自己运行登录脚本时,命令提示符中的 PATH 保持不变。这与 PowerShell 有什么关系?我完全不知道这与安装有什么关系。

答案1

Windows 有两类环境变量系统环境变量用户环境变量。如果你正在使用,echo %PATH%你会看到你的用户环境变量 PATH. 仅当没有定义用户变量时,系统变量才会对用户进程有效。

分隔PATH;后面不应有空格。

下列微软注释可能会有帮助:

您可以通过编辑以下注册表项来修改用户环境变量:

   HKEY_CURRENT_USER \ 
         Environment

您可以通过编辑以下注册表项来修改系统环境变量:

   HKEY_LOCAL_MACHINE \ 
               SYSTEM \ 
    CurrentControlSet \ 
              Control \ 
      Session Manager \ 
          Environment

请注意,任何需要扩展的环境变量(例如,当您使用 时%SYSTEM%)都必须作为注册表值存储在注册表中。从注册表读取时,不会扩展REG_EXPAND_SZ任何类型的值。REG_SZ

补充说明: 每当进程改变其环境(而不是定义新进程环境的注册表设置)时,这些更改仅对子进程可见。

答案2

经过一番折腾之后,似乎必须重新启动 Explorer,才能在新的命令提示符窗口中识别该路径

相关内容