Changing User or System Environment variables is done via registry + WM_SETTINGCHANGE,
like :
HKEY hKey;
DWORD dwResult = 0;
LONG nResult = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Environment"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwResult);
if (nResult == ERROR_SUCCESS)
{
TCHAR wsValue[] = TEXT("Test");
RegSetValueEx(hKey, TEXT("MyVariable"), 0, REG_SZ, (LPBYTE)wsValue, (_tcslen(wsValue) + 1) * sizeof(TCHAR));
}
if (hKey)
RegCloseKey(hKey);
SendNotifyMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)TEXT("Environment"));