【问题标题】:Is it possible to reload (Windows) environment variables?是否可以重新加载(Windows)环境变量?
【发布时间】:2013-02-26 21:11:53
【问题描述】:

正是它所说的。我可以设置每个用户的环境变量,无论是从 Windows > 键入“路径”,还是使用 RegEdit,甚至从 Python 脚本。

但如果我运行一个应用程序(例如从 Launchy 或从 Chrome 启动它),它不会获取新变量。我必须启动一个新的 cmd 或 Windows 资源管理器(我认为)才能获取新值。

现在,显然我可以在每次使用的基础上设置它们,但我想为我的帐户全局设置它们,也为我当时碰巧使用的任何进程设置它们。这可能吗?是否有可能(或更容易)从 Python 脚本中完成?

【问题讨论】:

  • 看看this question。它是关于 Unix 的,但有评论说它可以在带有 cygwin 的 Windows 中工作。如果是这种情况,您也许可以使用任何调试器来做到这一点。
  • @rodrigo 这很不错,但看起来它只适用于从 cygwin 启动的进程。根据我看到的 Windows 文档,它们不允许您控制其他进程,只广播其他应用程序负责侦听/响应的消息。呸!
  • 其中一位 cmets 说“它甚至可以在使用 cygwin 的 Windows 上运行,对于未使用 cygwin 编译的进程!”。我的猜测是,您可以简单地通过运行一个远程线程来执行您想要的操作,该线程使用适当的参数调用putenv()(或SetEnvironmentVariable())。这正是调试器所做的。你可以想象编写一个工具来做到这一点,但不是在 Python 中!

标签: python windows environment-variables


【解决方案1】:

如果您在注册表中设置环境变量(或通过系统属性 > 高级 > 环境变量 UI),对于从设置变量后创建的顶级上下文启动的每个进程,它将是全局且持久的。但是,除非您将注册表中的值与该上下文中的现有值显式合并,否则在更改之前初始化的外壳和上下文将不会获取这些更改。每个上下文都继承其父环境的环境,但在那之后,对父环境或子环境的更改不会在任一方向传播。在顶层创建的上下文从注册表中获取它们的环境。

【讨论】:

  • 是否有一个列表/站点包含创建上下文的不同方法?有什么方法可以触发从其他上下文创建新上下文?
猜你喜欢
  • 1970-01-01
  • 2021-11-29
  • 2015-05-25
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 2020-06-08
相关资源
最近更新 更多