修改环境变量的操作不是本次讲述的重点, CSDN上有很多文章都描述了修改环境变量的方法, 作者通常是通过修改注册表:
"HKEY_CURRENT_USER/Environment" 键下的各参数.
涉及到的API函数有:RegOpenKeyEx, RegQueryValueEx, RegSetValueEx; 相关函数的用法可以参考MSDN.
本次讨论的重点:
作者通过这几个函数修改环境变量后, 使用了PostMessage(HWND_BROADCAST, WM_SETTINGCHANGE , NULL, NULL),但结果是环境变量并没有生效.
再使用SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE , NULL, (LPARAM)"Environment",SMTO_NORMAL, 1000, &dwResult
)
最后使用:
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE , NULL, (LPARAM)"Environment", SMTO_NOTIMEOUTIFNOTHUNG, 1000, &dwResult)
环境变量生效!