程序修改Windows环境变量生效
2006-06-15 18:58
393 查看
修改Windows环境变量生效
bruce | 五月 27,2005 12:37 http://blog.9zi.com/post/1/805不少程序需要添加各自的环境变量,方便定制性使用。用得最多的是用户指定目录如JAVA_HOME等变量,程序中可以根据获取变量%JAVA_HOME%,来获取对应设置的字符串。
一般做法是安装的时候就指定,或者程序中设定。
用批处理临时设置环境变量就不提了,这里讲让环境变量始终生效。
一般做法是修改环境变量注册表。
整个Windows都有效的环境变量在
HKEY_LOCAL_MACHINESYSTEMControlSet001ControlSession ManagerEnvironment
中设置
对当前用户有效的环境变量在
HKEY_CURRENT_USEREnvironment
中设置
其实只是简单的元数据
但往往修改玩后无法即时生效,往往需要重启系统。
要解决即时生效的问题,可以再在我的电脑属性中设置环境变量中确定一下即可。
依此看来,这个过程肯定是读取了注册表,再调用一个系统函数来更新整个系统的变量。一定可以编程解决的。
可惜网海茫茫,收不到。
一不做二不休,直接下载打开innosetup的代码,搜索Environment,果真找到了。
很简单:
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,LPARAM("Environment"), SMTO_ABORTIFHUNG, 5000, &MsgResult);
发一个全局的广播,等待各自相应后,立即生效。
{ Note: We originally used SendNotifyMessage to broadcast the message but it
turned out that while it worked fine on NT 4 and 2000 it didn't work on XP
-- the string "Environment" in lParam would be garbled on the receiving
end (why I'm not exactly sure). We now use SendMessageTimeout as directed
in the KB article 104011. It isn't as elegant since it could cause us to
be delayed if another app is hung, but it'll have to do. }
Log It,以备后来者检索。
相关文章推荐
- 修改Windows环境变量后不重新启动使之立即生效的方法
- windows修改完环境变量立即生效
- Windows不重启就使环境变量修改生效
- Windows不重启使环境变量修改生效的详细步骤
- 详解Windows不重启使环境变量修改生效(经典)
- Windows修改环境变量后需重启才能生效
- Windows不重启就使环境变量修改生效
- 修改Windows环境变量后不重新启动使之立即生效的方法
- Windows不重启就使环境变量修改生效
- 解决Windows下修改环境变量后需重启才能生效的问题(转)
- Windows系统上安装多个版本jdk,修改环境变量不生效
- 详解Windows不重启使环境变量修改生效(经典)
- Windows不重启使环境变量修改生效
- 解决修改windows环境变量需要重启才能生效
- Windows不重启使环境变量修改生效
- windows环境变量修改立刻生效的办法
- windows环境变量修改立刻生效的办法
- Windows 系统安装多个版本JDK, 修改环境变量不生效
- Windows 10 修改系统环境变量后,CMD生效,Powershell未生效
- win系统环境变量中增加或修改环境变量后快速生效