gpt4 book ai didi

c++ - 以编程方式设置全局环境变量

转载 作者:可可西里 更新时间:2023-11-01 14:42:26 27 4
gpt4 key购买 nike

我需要以编程方式设置环境变量。

Microsoft 提供了有关 here 的文档.您只需在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 下的注册表中创建一个新值。这部分工作正常。

问题是这些更改只有在注销并再次登录后才会生效。

为了避免这种情况,他们建议执行这段代码:

if (!SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
(LPARAM) "Environment", SMTO_ABORTIFHUNG,
5000, &dwReturnValue))
{
... take action in case of failure
}

我正是这样做的,SendMessageTimeout 返回TRUE,但至少在 Windows 10 下它没有效果。新打开的命令提示符窗口仍然不会显示新创建的变量。

我也尝试过在提升进程中运行这段代码,但结果还是一样。

但是当我使用系统小程序更改环境变量时,我新创建的变量会出现,当我在小程序上单击“确定”并打开另一个命令提示符时,变量就在那里。

有什么想法吗?

最佳答案

通过显式调用 SendMessageTimeoutwide 版本并将 "Environment" 作为 wide 字符串:

SendMessageTimeoutW(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 
(LPARAM)L"Environment", SMTO_ABORTIFHUNG, 5000, &dwReturnValue);

关于c++ - 以编程方式设置全局环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48928002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com