我想使用 c++ 将新路径附加到现有环境变量。这应该是针对当前用户的(如果您可以提供 Local_Machine 的示例,那也是可以接受的)。
路径(新)和变量(已经存在)是
variable = Cur
path = E:\Softwares\Setup
我试过的
void SetUserVariablePath(){
HKEY hkey;
long regOpenResult;
const char key_name[] = "Environment";
const char path[]="E:\\Softwares\\Setup;"; //new path
LPCSTR stuff = "Cur"; //Variable Name
// here we open the variable and set the value
regOpenResult = RegOpenKeyEx(HKEY_CURRENT_USER,key_name, 0, KEY_ALL_ACCESS, &hkey);
RegSetValueEx(hkey,stuff,0,REG_EXPAND_SZ,(BYTE*) path, strlen(path)+1);
// tell other process to update their env values
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_BLOCK, 100, NULL);
// close the registery key
RegCloseKey(hkey);
}
对于上面的代码,我已经按照how-to-add-environment-variable-in-c进行了操作。该代码确实有效并为当前用户设置了环境变量,但它也覆盖了已经存在的任何现有路径,我想要什么做的是追加到现有的路径。
不能回答我问题的事情
- I am not taking about setting the variable for the current/child process(that can be done with setenv() or _putenv() function).
- I have already looked at these questions and they don't answer my question. Update system environment variable from c++ and Set system variable from C++