对于环境变量的访问,Windows提供了两个API,但这两个API对环境变量的操作仅对当前进程有效,并不会影响操作系统中的环境变量。
1 BOOL SetEnvironmentVariable( 2 LPCTSTR lpName, // environment variable name 3 LPCTSTR lpValue // new value for variable 4 ); 5 DWORD GetEnvironmentVariable( 6 LPCTSTR lpName, // environment variable name 7 LPTSTR lpBuffer, // buffer for variable value 8 DWORD nSize // size of buffer 9 );
那么想要修改操作系统中的本地环境变量,应该怎么做呢?
1、修改环境变量对应的注册表键值;
其中当前用户的环境变量对应于项HKEY_CURRENT_USER\Environment:
系统环境变量对应于项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment:
2、通知操作系统更新设置。
1 // 发送广播消息,通知操作系统更新环境变量。 2 ::SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, LPARAM(_T("Environment")));
根据以上思路,我用VC编写了一个操作环境变量的类CEnvironment,源代码:http://url.cn/QBOcKL