Here's a simple implementation (based on the MSDN instruction sent by SteelBytes):
bool SetPermanentEnvironmentVariable(LPCTSTR value, LPCTSTR data) { HKEY hKey; LPCTSTR keyPath = TEXT("System\\CurrentControlSet\\Control\\Session Manager\\Environment"); LSTATUS lOpenStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyPath, 0, KEY_ALL_ACCESS, &hKey); if (lOpenStatus == ERROR_SUCCESS) { LSTATUS lSetStatus = RegSetValueEx(hKey, value, 0, REG_SZ,(LPBYTE)data, strlen(data) + 1); RegCloseKey(hKey); if (lSetStatus == ERROR_SUCCESS) { SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_BLOCK, 100, NULL); return true; } } return false; }
source share