我想向 Windows 机器(台式机或服务器)添加一个环境变量,并且能够在不重新启动该机器的情况下使用它。
假设您有一个托管各种应用程序的生产服务器,而一个新应用程序需要一个特定的环境变量才能运行。当用户连接到您的其他应用程序时,您不想重新启动它。你有什么选择?我不喜欢等待直到重新启动的好时机选项。一定会有更好的办法。我错过了什么?
我想向 Windows 机器(台式机或服务器)添加一个环境变量,并且能够在不重新启动该机器的情况下使用它。
假设您有一个托管各种应用程序的生产服务器,而一个新应用程序需要一个特定的环境变量才能运行。当用户连接到您的其他应用程序时,您不想重新启动它。你有什么选择?我不喜欢等待直到重新启动的好时机选项。一定会有更好的办法。我错过了什么?
如果您通过相关计算机的主属性对话框进行更改(转到我的电脑 | 属性 | 高级 | 环境变量),对环境变量的更改应立即生效。保存更改后,资源管理器
WM_SETTINGCHANGE
会向所有窗口广播一条消息以通知它们更改。此后通过资源管理器生成的任何程序都应该获得更新的环境,尽管已经运行的程序不会,除非它们处理设置更改消息。我无法从您的问题描述中看出您遇到的具体问题。你能告诉我们更多关于不起作用的具体情况吗?
这篇知识库文章也可能有用:如何将环境变量传播到系统
runas /user:yourusername@yourdomain cmd
taskkill /f /im explorer.exe
explorer.exe
现在关闭所有命令提示符后,您将看到
PATH
变量已真正更新。必须关闭所有命令提示符。重新打开一个新的命令提示符,键入路径,您将看到新数据。
要记住的一件事是,许多程序在首次启动时会获取环境变量,因此虽然 Windows 可能不需要重新启动,但某些程序可能在它们能够使用新变量之前。一个很好的例子是在添加 PATH 后必须打开一个新的命令提示符窗口(是的,我被这个绊倒了)。
虽然我没有足够的声誉来评论这个问题的最高投票答案,但我想声明它并不完全正确。我知道这一点,因为无论我在这篇文章中尝试了哪种解决方法,都没有真正奏效。
该答案中链接到的 kb 文章实际上指出:
重新加载命令提示符后环境变量重置为先前值的部分正是我在 Windows Server 2008 中所经历的。
文章接着说:
这并不意味着一旦您更改了系统环境变量,Explorer 就会广播 WM_SETTINGCHANGE 消息,或者它确实有效。我不确定您将如何从命令提示符执行知识库文章中的建议(立即传播更改)。
制作环境。变量立即可用:
根据您要更改的环境变量,执行以下操作:(假设您要为最近安装的应用程序添加新的 PATH)因此,在 shell 提示符下,键入以下内容:
检查您的新路径是否已添加到环境变量中
完毕。
使变量在重新启动时可用
在 Windows 7/10 上测试并运行
由于人们尚未添加此答案,因此我想提一下,您可以使用 command 设置在重启后仍然存在的永久系统
SETX
变量。例如
请注意,以上在当前命令窗口中不起作用,需要您打开一个新的命令窗口才能生效。结果,取决于用例;您可能需要将其与上述其他技术之一结合起来。
服务的一个可能解决方案是作为另一个用户(LocalSystem、LocalService、NetworkService 除外)临时运行它们。例如,对于 Apache 服务,这可以正常工作。要更改服务帐户,请打开 services.msc 控制台,选择服务,单击服务属性,然后在第二个选项卡上输入用户的登录凭据。重新启动服务,它的环境变量应该是最新的。
如果这是一个已登录的用户,那么这应该没有问题。如果您使用的是当前用户帐户,则可能还需要重新启动 explorer.exe。另请注意,以普通用户帐户运行服务可能会产生安全风险。