当前位置: 首页 > 知识库问答 >
问题:

Windows环境变量-在程序中访问更新的环境变量时遇到麻烦

朱刚捷
2023-03-14

我写了一个初始化脚本,设置用户环境变量,这些变量是经过哈希和加密的密钥...创建密钥后,不再需要密钥加密exe。我想启动主应用程序并删除包含哈希和密钥加密功能的init文件。

我没有任何问题与任何上述...当彼此独立时,一切都应该正常工作。问题是,为了让主应用程序能够访问新创建的环境变量,我需要init脚本完全退出...

我尝试过的每一件事,带旗帜的Popen,os。system()和其他人仍然让我处于父进程结束,主应用程序启动的情况下,但是环境变量没有更新。。。我关闭并重新启动主电源。py和。。。程序看到更新的变量,一切正常。

我只想运行init脚本,生成一个根本不与init链接的新进程。然后退出,以便将其删除。我原以为这很简单,但经过几个小时的挠头和尝试,我仍然没有接近。

如果有必要,我会简单地将它捆绑为两个独立的. exe文件,但我希望它是一个一键安装类型的东西。

我正在运行windows 10,这可能是特定于平台的。

链接看了:

如何停止/终止Python脚本从运行?

使用Python子进程调用调用Python脚本

开始一个单独的过程

https://docs.python.org/2/library/subprocess.html

Python:如何启动完整进程而不是子进程并检索PID

还有更多。。。

当前最接近结果

p = Popen(["python","UserInterface.py"], stdin=PIPE, stdout=PIPE, stderr=PIPE,
      creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP)

共有1个答案

卫泉
2023-03-14

创建环境块,使用SetEnvironmentVariable设置环境变量,并使用CreateProcess为创建的进程指定此环境块。

MSDN文件:

要为进程指定不同的环境,请创建一个新的环境块,并将指针作为参数传递给CreateProce函数。

...

要以编程方式添加或修改系统环境变量,请将它们添加到HKEY_LOCAL_MACHINE\System\MONtControlSet\Control\会话管理器\环境注册表项中,然后广播一条WM_SETTINGCHANGE消息,其中lParam设置为字符串"环境"。这允许应用程序(如shell)获取更新。

 类似资料:
  • 本文向大家介绍Windows Powershell 环境变量,包括了Windows Powershell 环境变量的使用技巧和注意事项,需要的朋友参考一下 传统的控制台一般没有象Powershell这么高级的变量系统。它们都是依赖于机器本身的环境变量,进行操作 。环境变量对于powershell显得很重要,因为它涵盖了许多操作系统的细节信息。此外,powershell中的变量只存在于powersh

  • 问题内容: 我正在尝试在Jenkins中使用DSL管道。我认为如果可以将项目名称用作脚本的一部分,那就太好了。 我得到错误: 我以为我遵循了这些指示,并且将其作为变量之一。 我决定尝试: 在我的DSL中,结果显示为: 这是我所期望的。 另一个博客提到: 使用环境变量 我们有两种方法来获取它们的价值。在启动过程中传递的属性,由于Groovy与Java的紧密联系,我们可以理解为。 以Java方式读取普

  • 问题内容: 有谁知道如何在Java中访问标准Shell环境的环境变量?我正在使用ProcessBuilder类,并且必须指定正在运行的Shell脚本中使用的特定环境变量,这些变量存在于标准Shell环境中。 访问ProcessBuilder环境不起作用。 问题答案: 您可以通过以下方法获取创建程序时存在的环境变量: http://download.oracle.com/javase/tutoria

  • Git 总是在一个 bash shell 中运行,并借助一些 shell 环境变量来决定它的运行方式。 有时候,知道它们是什么以及它们如何让 Git 按照你想要的方式去运行会很有用。 这里不会列出所有的 Git 环境变量,但我们会涉及最有的那部分。 全局行为 像通常的程序一样,Git 的常规行为依赖于环境变量。 GIT_EXEC_PATH 决定 Git 到哪找它的子程序 (像 git-commit

  • Puppeteer 寻找某些环境变量来帮助其操作。 如果 puppeteer 在环境中没有找到它们,这些变量的小写变体将从 npm 配置 中使用。 HTTP_PROXY, HTTPS_PROXY, NO_PROXY - 定义用于下载和运行 Chromium 的 HTTP 代理设置。 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD - 请勿在安装步骤中下载绑定的 Chromium。

  • 环境变量 vue-element-admin 4.0 之后是基于 vue-cli来进行构建,所以所有的环境变量配置都是基于vue-cli来实现和控制的。 官方文档 .env # 在所有的环境中被载入 .env.[mode] # 只在指定的模式中被载入 一个环境文件只包含环境变量的“键=值”对: FOO=bar VUE_APP_SECRET=secre