【问题标题】:Modify system environment variables修改系统环境变量
【发布时间】:2017-07-16 01:17:33
【问题描述】:

我想在 Windows 上修改我系统的环境变量。我可以打开控制面板的“环境变量”对话框:

但是,我想在 C 中以编程方式执行此操作。AFAIK,在 Unix 中我可以修改全局变量 environ,但我怀疑这在 Windows 中是否可行。

那么,如何以编程方式修改 Windows 系统环境变量?

【问题讨论】:

  • 用什么语言?
  • @RobertColumbia 标记为 c但是,我想在 C 中以编程方式执行此操作。
  • Google 搜索 windows set environment variable 会出现this answer 作为第三个结果,并且该页面包含link to a code example
  • 您要求使用 C 解决 Windows 问题并且不想使用 windows.h?祝你好运。整个 API 依赖于该文件中的声明。期望在不使用 Windows 的情况下以编程方式做任何事情是愚蠢的,如果您决定这是您想要做的,那么您应该期望自己必须弄清楚。
  • @KenWhite 是的。我在写那条评论的中途重新思考了我的整个人生,并删除了它。对不起。

标签: c windows environment-variables


【解决方案1】:

如果您使用 MinGW/TDM-GCC,您可能可以使用与 Unix 中相同的函数,getenv 获取变量的内容,setenvputenv 编写或修改变量。

如果你想成为本地人,你可以通过使用来做到这一点 GetEnvironmentVariable/SetEnvironmentVariable。还提供了如何使用这些的示例。虽然它们被标记为 C++,但您可以使用 C++ 编译器或使用 extern "C" 链接。

【讨论】:

  • 请注意,这些函数中的任何一个都会更改调用进程的环境
  • 完全错过了这个问题。 OP 正试图永久改变环境。您提出的解决方案仅影响调用进程的环境,并且是暂时的。一旦该过程终止,更改就会丢失。抱歉,-1。
【解决方案2】:

有关如何更改系统环境变量的详细信息记录在Environment Variables

调用SetEnvironmentVariable 对系统环境变量没有影响。要以编程方式添加或修改系统环境变量,请将它们添加到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment 注册表项,然后使用 lParam广播 WM_SETTINGCHANGE 消息> 设置为字符串“环境”。这允许应用程序(例如 shell)获取您的更新。

请注意,需要提升进程才能更改 HKEY_LOCAL_MACHINE 配置单元下的值。

【讨论】:

    猜你喜欢
    • 2012-03-29
    • 2015-08-20
    • 2015-09-16
    • 2019-01-19
    • 2015-09-12
    • 1970-01-01
    • 2016-06-25
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多