这可能是一个简单的答案,但我从来没有能够通过谷歌searchfind它。 我只是想将一个环境variables添加到Windows机器(桌面或服务器),并能够使用它,而无需重新启动该机器。
假设你有一个生产服务器,托pipe各种应用程序,一个新的应用程序需要一个特定的环境variables来运行。 用户连接到其他应用程序时,您不想重新启动它。 你有什么select? 我不喜欢等待,直到一个良好的时间重新启动选项。 一定有更好的办法。 我错过了什么?
如果通过相关计算机的主“属性”对话框(转到“我的电脑”|“属性”|“高级”|“环境variables”)对环境variables所做的更改应立即生效。 保存更改后,资源pipe理器将向所有窗口广播WM_SETTINGCHANGE
消息,以通知其更改。 任何通过资源pipe理器生成的程序都应该得到更新的环境,尽pipe已经运行的程序不会,除非它们处理设置改变消息。
我无法从您的问题描述中得知您遇到的具体问题。 你能告诉我们更多关于不工作的具体情况吗?
这个知识库文章也可能是有用的: 如何传播环境variables到系统
runas /user:yourusername@yourdomain cmd
taskkill /f /im explorer.exe
explorer.exe
现在closures所有命令提示符后,您将看到PATH
variables已经真正更新。
所有命令提示符都必须closures。 重新打开一个新的命令提示符,键入path,您将看到新的数据。
有一点需要记住的是,许多程序在第一次启动时就会获取环境variables,所以虽然Windows可能不需要重新启动,但有些程序可能会在使用新的variables之前进行重新启动。 很好的例子就是在添加一个PATH之后,打开一个新的命令提示符窗口(是的,我已经被这个绊住了)。
虽然我没有足够的声望评论这个问题的最高票数,但我想指出,这是不完全正确的。 我知道这一点,因为无论我在这篇文章中尝试过哪种解决方法,没有任何实际的工作。
链接到该答案的kb文章实际上指出:
但是请注意,对环境variables的修改不会导致立即更改。 例如,如果在进行更改之后启动另一个命令提示符,则环境variables将反映以前(而不是当前)值。 只有注销并重新login后,更改才会生效。
重新加载命令提示符后,有关环境variables重置为以前的值的部分正是我在Windows Server 2008中遇到的情况。
文章接着说:
要实现这些更改而不必注销,请将WM_SETTINGCHANGE消息广播到系统中的所有窗口,以便任何感兴趣的应用程序(例如Windows资源pipe理器,程序pipe理器,任务pipe理器,控制面板等)都可以执行更新。
这并不意味着一旦你改变了系统环境variables或者它实际上工作,Explorer就会广播WM_SETTINGCHANGE消息。 我不确定如何执行知识库文章中的build议(立即传播更改)从命令提示符。
使env。 variables立即可用:
1. Open a shell
根据您想要更改的环境variables,请执行以下操作:(假设您想为最近安装的应用程序添加一个新的PATH)因此,在shell提示下键入以下命令:
2. PATH=%PATH%;C:\type\your\new\path\here
检查你的新path是否被添加到环境variables中
3. echo %PATH%
完成。
在重新启动时使variables可用
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
testing和工作在Windows 7/10
对于服务可能的解决scheme是作为另一个用户(LocalSystem,LocalService,NetworkService除外)临时运行它们。 例如对于Apache服务,这工作没有任何问题。 要更改服务帐户,请打开services.msc控制台,select服务,单击服务属性,然后在第二个选项卡上input用户的login凭据。 重新启动服务,它的环境variables应该是最新的。
如果这是一个已经被logging的用户应该没有问题。 如果您正在使用当前用户帐户,则可能还需要重新启动explorer.exe。 另请注意,以普通用户帐户运行服务可能会造成安全风险。