【问题标题】:What is the equivalent of setenv in Windows?Windows 中的 setenv 等价物是什么?
【发布时间】:2022-01-14 19:05:47
【问题描述】:

我正在尝试为 setenv 找到一个等效项以在 C 程序中使用。我要做的是修改当前运行进程的所有环境变量的值。我正在尝试使用putenv,但它不会以任何方式更改变量的值。我能做什么?

【问题讨论】:

  • _putenv 改变进程状态中的变量。一个进程显然不能改变调用者的状态。
  • “我正在尝试使用 putenv” - 代码,作为正确的 minimal reproducible example,展示了您正在尝试做的事情,并显示它似乎是如何失败的具体到您的声明,应添加到您的问题中。
  • 问题是我知道该代码有效,但仅适用于 Linux,我正在寻找 Windows 中的替代方案。

标签: c windows environment-variables setenv


【解决方案1】:

这些是设置环境变量的正确方法。您遇到的问题是 C 运行时 setenv 使用的 SetEnvironmentVariable 不会更改系统范围的环境变量;只有当前运行的进程的环境。

在 Windows 上更改系统范围或每个用户的环境变量通常使用脚本或 UI 完成。要从 C 程序修改系统范围的环境变量,您需要 (a) 使用 administrator rights 运行它,(b) 您需要修改 System Registry,以及 (c) 您需要发送 WM_SETTINGSCHANGE Win32 消息以获取 Windows shell 获取的更改。

【讨论】:

  • 如果我只想更改当前运行的进程,而不是 setenv 怎么办?
  • 作为答案中发布的第一个链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
  • 2019-06-21
  • 2013-06-16
  • 1970-01-01
  • 2010-11-15
  • 2020-06-20
相关资源
最近更新 更多