it-swarm.cn

如何在不重新启动的情况下添加Windows环境变量?

我想向Windows计算机(台式机或服务器)添加一个Environment变量,并且无需重新启动该计算机即可使用它。

假设您有一个托管各种应用程序的生产服务器,而一个新应用程序需要运行特定的环境变量。当用户连接到其他应用程序时,您不想重新启动它。您有什么选择?我不喜欢等待重新启动的好时机选项。肯定有更好的办法。我想念什么?

186
Chad Braun-Duin

如果通过相关计算机的“属性”主对话框进行更改,则对环境变量的更改应立即生效(转到“我的电脑” |“属性” |“高级” |“环境变量”)。保存更改后,资源管理器将广播WM_SETTINGCHANGE消息发送给所有窗口,以通知他们所做的更改。在此之后通过资源管理器生成的任何程序都应该获得更新的环境,尽管已经运行的程序不会,除非它们处理设置更改消息。

我无法从您的问题描述中看出您遇到的具体问题。您能否告诉我们更多有关无法正常工作的特定情况的信息?

该知识库文章也可能有用: 如何将环境变量传播到系统

166
Charlie
  1. 在命令提示符中输入:runas /user:[email protected] cmd
  2. 它将打开一个新的cmd提示符,然后键入:taskkill /f /im Explorer.exe
  3. 然后输入:Explorer.exe

现在,在关闭所有命令提示符后,您将看到PATH变量已真正更新。

必须关闭所有命令提示符。重新打开新命令提示符,键入path,您将看到新数据。

66
Ron AndKim Stengel

要记住的一件事是,许多程序在首次启动时都会获取环境变量,因此,尽管Windows可能不需要重新启动,但某些程序可能需要先使用新变量。一个很好的例子是在添加PATH之后必须打开一个新的命令提示符窗口(是的,我为此而被绊倒了)。

20
nedm

尽管我没有足够的声誉来评论对此问题的最高投票答案,但我想指出这并不完全正确。我知道这是因为无论我在这篇文章中尝试了哪种解决方法,都没有任何实际效果。

该答案中链接到的kb文章 实际上指出:

但是,请注意,修改环境变量不会立即导致更改。例如,如果在进行更改后启动另一个“命令提示符”,则环境变量将反映先前(而非当前)的值。在您注销然后重新登录之前,更改不会生效。

在重新加载命令提示符后,有关环境变量重置为先前值的部分正是我在Windows Server 2008中所经历的。

文章继续说:

要实现这些更改而不必注销,请向系统中的所有窗口广播WM_SETTINGCHANGE消息,以便任何感兴趣的应用程序(例如Windows Explorer,程序管理器,任务管理器,控制面板等)都可以执行更新。

这并不意味着一旦您更改了系统环境变量,Explorer就会广播WM_SETTINGCHANGE消息,或者它实际上是有效的。我不确定您将如何通过命令提示符执行知识库文章中的建议(立即传播更改)。

16
testworks

使环境。变量立即可用:

1. Open a Shell

根据您要更改的环境变量,执行以下操作:(假设您要为最近安装的应用程序添加新的PATH)因此,在Shell提示符下,键入以下内容:

2. PATH=%PATH%;C:\type\your\new\path\here

检查新路径是否已添加到环境变量中

3. echo %PATH%

做完了.

使变量在重新启动时可用

1. Press WinLogoKey+Pause/Break
2. On the left pane, press 'Advanced System Settings'
3. On the 'Advanced' tab, click 'Environment Variables'
4. In 'System Variables' choose the one you want to modify
5. Click Ok

经过测试并在Windows 7/10上工作

4
Pedro Sousa

服务的一种可能解决方案是以另一个用户(LocalSystem,LocalService,NetworkService除外)临时运行它们。例如,对于Apache服务,它可以正常工作。若要更改服务帐户,请打开services.msc控制台,选择“服务”,单击“服务属性”,然后在第二个选项卡上输入用户的登录凭据。重新启动服务,它的环境变量应该是最新的。

如果这是一个已登录的用户,则它将正常工作。如果使用当前用户帐户,则也可能需要重新启动Explorer.exe。另请注意,以普通用户帐户运行服务可能会带来安全风险。

3
Odin

由于人们尚未添加此答案,因此我想提及一下,您可以设置永久的系统变量,这些变量可以在使用SETX命令重新启动后仍然存在。

例如.

setx PATH "%PATH%;c:\temp\my\new\path"

请注意,以上内容在当前命令窗口中不起作用,并且需要您打开一个新的命令窗口才能生效。结果,取决于用例;您可能需要将此与上述其他技术之一结合使用。

请参阅以下URL了解更多详细信息

1
Doug