环境变量改变不起作用

时间:2014-11-10 18:30:18

标签: windows windows-7 path environment-variables

我正在构建一个软件的安装程序,该软件需要第三方可执行文件才能在路径中运行。换句话说,我的软件通过系统调用调用3rdparty.exe

我运行了第三方安装程序,然后运行了我的软件,但我的软件没有找到3rdparty.exe,因为路径环境变量没有被更改。我通过在全新命令行运行set > file.txt来确认这一点,并且路径中的新添加内容不存在。是的,我在第三方软件完成后启动了新的命令行 - 几分钟后....所以是的,应该已经填充了环境变量。

现在这里是奇怪的部分。我去了环境变量"环境变量"用于编辑系统路径的对话框,猜猜新路径已经存在,并添加到旧路径的末尾。

以下是我留下的事实:

  • 第三方安装程序更改了系统路径 环境变量,将C:\program files\blah\...添加到结尾 路径。

  • 这会立即出现在"环境变量"对话框。

  • 这个没有在没有重新启动的情况下显示在任何新的cmd.exe shell中 开始。是的,我多次尝试过。

我以前从未见过这种行为。有人可以解释一下这里发生了什么吗?我已经运营多年,假设一旦设置了环境变量,任何新流程都将获得完整的当前环境的副本。在一个案例中没有发生这种情况。

何时应用Windows环境变量?我错过了什么?这是第三方软件的一些奇怪的安装程序的工件?这是Windows的神器吗?

将这一切归结为一个问题:发生了什么

1 个答案:

答案 0 :(得分:1)

使用SET命令所做的更改不是永久性的,它们仅适用于当前CMD prompt,仅在CMD窗口关闭之前保留。 要在命令行永久更改变量,请使用SetX 或使用GUI - Control Panel | System | Environment | System/User Variables

比照SETX.exe (Resource Kit, Windows 7)

已更新:虽然我们不知道第三方安装程序更改系统路径环境变量的方式,但所有症状都表明通过注册表更改执行此操作 - 如果是不播放WM_SETTINGCHANGE消息,然后,根据Microsoft Technet和MSDN页面,更改不会生效,直到您注销然后重新登录 - 甚至重新启动计算机...(通过或由于,缓存一些注册数据)。

你问题中描述的行为似乎并不奇怪:它不是错误,它是一个特征......: - )