【发布时间】:2015-07-04 21:04:30
【问题描述】:
我刚刚花了最后一个小时试图找出为什么我的 PATH 变量没有为我的 cmd.exe 更新。
现在我发现它确实更新了,但仅限于某些条件......
我通过Win+Break -> Change Settings -> Advanced -> Environment Variables...更新了它
现在,当我通过Win+R -> cmd -> Enter 打开一个新命令行时,PATH 变量会显示我设置的任何值。
但是当我通过Shift+Rightclick into folder -> Open command window here 打开一个新命令行时,PATH 变量会显示过时的内容。
我的问题:为什么会发生这种情况,我该怎么办?
【问题讨论】:
-
您在第一步更新了注册表。在启动进程并且它不继承其父进程的环境之前,这些更改不会生效。您必须重新启动 Explorer.exe,最简单的方法是注销并重新登录。
-
@HansPassant 哇...解决了它。谢谢,将其作为答案发布,以便我接受。
-
@HandPassant,当控制面板更新环境设置时,顶级窗口会收到
WM_SETTINGCHANGE消息,资源管理器为此调用shell32!RegenerateUserEnvironment重新加载其环境。那么,Explorer(两种情况下的父级)是如何在一种情况下使用新环境而在另一种情况下不使用的呢?也许稍后我会在调试器中查看它以了解发生了什么。从表面上看,重启会话解决了问题,但并不能解释行为。 -
@eryksun:我感觉“在此处打开命令窗口”是第三方插件。 (我在我的机器上看不到它。)所以它可能只是不知道在哪里可以找到环境块的“最新”版本。
-
@HarryJohnston,它在 Windows 7 中。它不应该打开提升的命令提示符,但可能 Forivin 只是禁用了 UAC。
标签: windows cmd environment-variables contextmenu path-variables