一些重要的背景信息:我的公司有一个通用的登录 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 上搜索帮助时,我找到了以下信息:
我突然想到,如果登录脚本是由我的 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,才能在新的命令提示符窗口中识别该路径