2013-02-26 76 views
0

正是它所说的。我可以设置每个用户的环境变量,无论是从Windows>键入“路径”,或使用RegEdit,甚至从Python脚本。是否可以重新加载(Windows)环境变量?

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

现在,很明显,我可以根据每次使用情况设置它们,但是我希望将它们设置为全局用于我的帐户,也适用于我当时正在使用的任何过程。这可能吗?是否可以(或更容易)从Python脚本中完成?

+0

看看[这个问题](http://stackoverflow.com/questions/205064/is-there-a-way-to-change-another-processs-environment-variables)。它是关于Unix的,但有一条评论说它可以在Windows中使用cygwin。如果是这样的话,你可以用任何调试器来做到这一点。 – rodrigo 2013-02-26 21:59:21

+0

@rodrigo这很漂亮,但它看起来只能用于从cygwin启动的进程。根据我看到的Windows文档,他们不允许您控制其他进程,只会传播其他应用程序然后负责收听/响应的消息。呸! – 2013-02-26 22:18:44

+0

其中一条评论说:“它甚至可以在使用cygwin的Windows上工作,对于没有使用cygwin编译的进程!”。我的猜测是,你可以通过运行一个调用'putenv()'(或'SetEnvironmentVariable()')的适当参数的远程线程来做你想要的_simply_。这正是调试器的功能。你可以想象,写一个这样做的工具,但不能用Python! – rodrigo 2013-02-26 22:58:41

回答

2

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

+0

是否有包含创建**新**上下文的不同方法的任何地方的列表/网站?有没有什么办法可以触发从其他上下文创建新的上下文? – 2013-02-26 21:43:11

相关问题