AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 8855
Accepted
Chad Braun-Duin
Chad Braun-Duin
Asked: 2009-05-16 20:09:31 +0800 CST2009-05-16 20:09:31 +0800 CST 2009-05-16 20:09:31 +0800 CST

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

  • 772

我想向 Windows 机器(台式机或服务器)添加一个环境变量,并且能够在不重新启动该机器的情况下使用它。

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

windows environment-variables
  • 7 7 个回答
  • 432225 Views

7 个回答

  • Voted
  1. Best Answer
    Charlie
    2009-05-16T20:16:34+08:002009-05-16T20:16:34+08:00

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

    我无法从您的问题描述中看出您遇到的具体问题。你能告诉我们更多关于不起作用的具体情况吗?

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

    • 188
  2. Ron AndKim Stengel
    2013-03-20T22:36:14+08:002013-03-20T22:36:14+08:00
    1. 在命令提示符下键入:runas /user:yourusername@yourdomain cmd
    2. 它将打开一个新的 cmd 提示符,然后键入: taskkill /f /im explorer.exe
    3. 然后输入:explorer.exe

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

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

    • 83
  3. nedm
    2009-05-16T22:11:58+08:002009-05-16T22:11:58+08:00

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

    • 20
  4. testworks
    2013-11-27T14:30:54+08:002013-11-27T14:30:54+08:00

    虽然我没有足够的声誉来评论这个问题的最高投票答案,但我想声明它并不完全正确。我知道这一点,因为无论我在这篇文章中尝试了哪种解决方法,都没有真正奏效。

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

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

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

    文章接着说:

    要在不必注销的情况下进行这些更改,请将 WM_SETTINGCHANGE 消息广播到系统中的所有窗口,以便任何感兴趣的应用程序(例如 Windows 资源管理器、程序管理器、任务管理器、控制面板等)都可以执行更新。

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

    • 17
  5. Pedro Sousa
    2015-11-19T09:00:44+08:002015-11-19T09:00:44+08:00

    制作环境。变量立即可用:

    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 上测试并运行

    • 5
  6. Doug
    2018-12-08T07:40:49+08:002018-12-08T07:40:49+08:00

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

    例如

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

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

    • 5
  7. Odin
    2010-08-10T12:26:22+08:002010-08-10T12:26:22+08:00

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

    如果这是一个已登录的用户,那么这应该没有问题。如果您使用的是当前用户帐户,则可能还需要重新启动 explorer.exe。另请注意,以普通用户帐户运行服务可能会产生安全风险。

    • 3

相关问题

  • 您最喜欢的云计算提供商是什么?[关闭]

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve