代码之家  ›  专栏  ›  技术社区  ›  LK.

有没有一种方法在C++环境下编程地设置环境路径?

  •  17
  • LK.  · 技术社区  · 16 年前

    是否有方法以编程方式(C++)设置全局windows path环境变量?


    直接在注册表中更改 (HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment)

    5 回复  |  直到 7 年前
        1
  •  26
  •   Assaf Lavie    14 年前

    MSDN Says :

    调用SetEnvironmentVariable没有 对系统环境的影响 变量。 修改系统环境变量, HKEY\U LOCAL\U MACHINE\System\CurrentControlSet\Control\Session 管理器\环境注册表项,然后 广播WM_设置更改消息 将lParam设置为字符串 应用程序(如shell)可以 拿起你的更新。请注意 环境变量的值 此密钥中列出的限制为1024 人物。

        2
  •  12
  •   jussij    16 年前

    只需更改此注册表项:

    HLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
    

    但您也可以在 用户级 通过更改此注册表项:

    HKEY_CURRENT_USER\Environment\Path
    

    您还可以在

    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\
    
        3
  •  3
  •   anon anon    16 年前

    没有API-更改注册表是一种方法。更改后的值将用于更改后开始的进程。

    另外:请注意,正在运行的应用程序必须主动处理设置更改消息,而许多(大多数?)应用程序不这样做。

        4
  •  2
  •   drby    16 年前

    如果您想通过注册表执行此操作,您可能需要查看 this 程序

    Microsoft还提供了一个名为setx的小型命令行实用程序,它具有 resource toolkits ,它将允许您执行此操作。顺便说一句,我认为常规set命令只允许您定义本地环境变量。

        5
  •  2
  •   lakshmanaraj    16 年前

    是的,你是对的。 您还需要在不注销的情况下影响这些设置

    使用SendMessageTimeout API,使用SMTO_abortfhung向所有windows设置更改参数(LPARAM)“Environment”发送borad casting消息数毫秒(5000)。

    这就是随资源工具包提供的setX.exe的作用。