我有一台 Windows 7 机器,当普通用户运行命令提示符时,无法扩展环境中的变量%PATH%
。如果以管理员身份运行命令提示符(右键单击,以管理员身份运行) 则被%PATH%
适当扩大。
具体来说,%PATH%
以cmd.exe
用户身份运行(通过 显示set path
)如下:
Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\
...%PATH%
以cmd.exe
管理员身份运行如下:
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\
我尝试以新用户身份登录来创建新的配置文件,但该配置文件上的问题仍然存在。HKEY_CURRENT_USER\Environment\PATH
不存在,并且HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path
与“计算机属性”->“环境变量”中定义的系统范围路径匹配。
有人知道这可能是什么吗,或者我可以在哪里找到它?
答案1
我可能会尝试两件事。
- 运行
sfc /scannow
以查看是否能解决任何较大的问题。 - 检查注册表
Path
中的项HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
。什么是类型应该说REG_EXPAND_SZ
答案2
我有一个非常类似的问题 - 简单的解决方案是添加路径定义中的别名后面有一个分号。
很长的故事:
我正在使用node.js
所以有一个节点主目录通过用户环境变量定义的别名。然后我将此别名附加到我的小路环境变量。
我发现,重新启动后,shell 丢失了以下路径:节点主目录sonpm
等不起作用。发生了什么事?
经检查,我发现节点主目录已设置,但它却神奇地获得了一个分号。
C:\Users\ob>echo %NODE_HOME%
C:\Users\ob\node-8.11.1;
小路现在以文字字符串结尾节点主目录而不是节点文件夹的扩展路径:
C:\Users\ob>echo %PATH%
C:\Program...rams\Git\cmd;%NODE_HOME%
要解决这个问题:
首先,删除定义末尾的错误分号节点主目录。
第二,添加后面有一个分号节点主目录定义中的符号小路:
C:\Program...rams\Git\cmd;%NODE_HOME%;
现在当我启动一个新的 shell 并扩展小路,它发现节点主目录:
C:\Users\ob>echo %PATH%
C:\Program...ams\Git\cmd;C:\Users\tkobo\Installations\node-8.11.1;
并且npm
再次工作!
答案3
我在尝试配置 Maven 时遇到了同样的问题......
我找到了这个在超级用户上发帖这在一定程度上解释了这个问题,但对我来说没用。问题似乎与权限提升有关,因为管理员 shell 可以工作,但用户 shell 不行。我最终决定将用户变量重新创建为系统变量,并将其添加到全局路径中。
这对几个变量有效,但有一对变量仍然无法扩展。我用新名称重新创建了它们几次,但无济于事。然而,在我禁用 UAC、重新启动、重新启用 UAC 并再次重新启动后,变量终于在用户 shell 中正确扩展了。
答案4
问题:我的问题和你的情况类似,我理解的没错。我的“路径”包含 ...;%ANT_HOME%\bin;... 我在系统(而非用户)变量下正确设置了变量 ANT_HOME,并且 CMD --> SET same as "echo %ANT_HOME%" 正确打印了它。
解决方案:我通过以下方式解决了这个问题移动文件夹来自 c:\dev\3rd\ant...到c:\Programm 文件 (x86)\dev\3rd\ant...