Cha*_*uin 201 windows environment-variables
我想向 Windows 机器(台式机或服务器)添加一个环境变量,并且能够在不重新启动该机器的情况下使用它。
假设您有一个托管各种应用程序的生产服务器,并且一个新应用程序需要特定的环境变量才能运行。您不希望在用户连接到您的其他应用程序时重新启动它。你有哪些选择?我不喜欢等到好时机重启选项。一定会有更好的办法。我错过了什么?
Cha*_*lie 179
如果您通过相关计算机的主属性对话框进行更改(转到我的电脑 | 属性 | 高级 | 环境变量),则对环境变量的更改应立即生效。保存更改后,资源管理器会WM_SETTINGCHANGE向所有窗口广播一条消息,通知它们更改。在此之后通过资源管理器生成的任何程序都应该获得更新的环境,尽管已经运行的程序不会,除非它们处理设置更改消息。
我无法从您的问题描述中看出您遇到的具体问题。你能告诉我们更多关于不起作用的特定场景吗?
这篇知识库文章也可能有用:如何将环境变量传播到系统
小智 80
runas /user:yourusername@yourdomain cmdtaskkill /f /im explorer.exeexplorer.exe现在关闭所有命令提示符后,您将看到PATH变量已真正更新。
必须关闭所有命令提示符。重新打开一个新的命令提示符,输入 path ,您将看到新数据。
ned*_*edm 20
要记住的一件事是,许多程序在第一次启动时获取环境变量,因此虽然 Windows 可能不需要重新启动,但某些程序可能会在它们能够使用新变量之前。一个很好的例子是在添加 PATH 后必须打开一个新的命令提示符窗口(是的,我被这个绊倒了)。
小智 16
虽然我没有足够的声誉来评论这个问题的最高投票答案,但我想声明它并不完全正确。我知道这一点,因为无论我在这篇文章中尝试了哪种解决方法,都没有真正奏效。
但是,请注意,对环境变量的修改不会立即导致更改。例如,如果您在进行更改后启动另一个命令提示符,则环境变量将反映以前(而不是当前)的值。直到您注销然后重新登录后,更改才会生效。
重新加载命令提示符后环境变量重置为以前的值的部分正是我在Windows Server 2008中遇到的。
文章接着说:
要在不注销的情况下实现这些更改,请向系统中的所有窗口广播 WM_SETTINGCHANGE 消息,以便任何感兴趣的应用程序(如 Windows 资源管理器、程序管理器、任务管理器、控制面板等)都可以执行更新。
这并不意味着一旦您更改了系统环境变量,Explorer 就会广播 WM_SETTINGCHANGE 消息,或者它确实有效。我不确定您将如何从命令提示符执行知识库文章中建议的操作(立即传播更改)。
由于人们还没有添加这个答案,我想提一下,您可以使用命令设置SETX在重新启动后仍然存在的永久系统变量。
例如
setx PATH "%PATH%;c:\temp\my\new\path"
Run Code Online (Sandbox Code Playgroud)
请注意,上述命令在当前命令窗口中不起作用,需要您打开一个新的命令窗口才能生效。因此,取决于用例;您可能需要将其与上述其他技术之一结合起来。
使环境。立即可用的变量:
1. Open a shell
Run Code Online (Sandbox Code Playgroud)
根据您要更改的环境变量,执行以下操作:(假设您要为最近安装的应用程序添加新的 PATH)因此,在 shell 提示符下,键入以下内容:
2. PATH=%PATH%;C:\type\your\new\path\here
Run Code Online (Sandbox Code Playgroud)
检查您的新路径是否已添加到环境变量中
3. echo %PATH%
Run Code Online (Sandbox Code Playgroud)
完毕。
使变量在重新启动时可用
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
Run Code Online (Sandbox Code Playgroud)
在 Windows 7/10 上测试和工作
| 归档时间: |
|
| 查看次数: |
399484 次 |
| 最近记录: |