程序修改Windows环境变量生效

转载 2006年06月15日 18:58:00

修改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,以备后来者检索。

Linux中修改环境变量及生效方法(永久、临时)环境变量查看

Linux中修改环境变量及生效方法如下: 方法一:   在/etc/profile文件中添加变量【对所有用户生效(永久的)】   用vim在文件/etc/profile文件中增加变量...
  • u011630575
  • u011630575
  • 2015年11月14日 22:12
  • 3834

Ubuntu设置环境变量并生效[转载]

Ubuntu设置环境变量(以Ubuntu12.04为例) Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环境变量。系统环境变量对所有系统用户都有效,用户环境变量仅仅对当前的用户有...
  • zhengqijun_
  • zhengqijun_
  • 2017年03月16日 10:58
  • 1273

mac中添加环境变量无效

先科普一下 mac 一般使用bash作为默认shell Mac系统的环境变量,加载顺序为: /etc/profile /etc/paths ~/.bash_profile ~/.bash_log...
  • hlllmr1314
  • hlllmr1314
  • 2016年08月17日 10:58
  • 4204

java程序修改环境变量

  • 2010年08月24日 23:45
  • 93KB
  • 下载

c#不重启电脑修改环境变量生效

  • 2013年12月30日 10:51
  • 16KB
  • 下载

详解Windows不重启使环境变量修改生效(经典)

http://hi.baidu.com/xckouy/item/ff135263dfd92a97c4d2496b 在“我的电脑”->“属性”->“高级”->“环境变量”中增加或修改环...
  • shuixin536
  • shuixin536
  • 2012年10月18日 11:05
  • 36374

命令行使windows环境变量立即生效

命令行使windows环境变量立即生效用户变量和环境变量对于Windows系统级应用开发有着至关重要的意义。最重要的一项功能便是我们可以通过DOS命令行或运行时指令进行本地过程调用,从而避免诸多路径相...
  • huanglong8
  • huanglong8
  • 2016年12月11日 17:06
  • 464

Windows 如何让环境变量设置后 立即生效

在“我的电脑”->“属性”->“高级”->“环境变量”中增加或修改环境变量后,需重启系统才能使之生效。有没有什么方法可让它即时生效呢?下面介绍一种方法:   以修改环境变量“PATH”为例,修改...
  • liufangbaishi2014
  • liufangbaishi2014
  • 2017年07月18日 21:12
  • 1374

windows下更新环境变量不需要重启系统快速生效的方法(原理篇)

本方式是针对windows的环境变量进行了修改,但是不希望重启windwos系统的解决方法以及原理的一些简单的介绍。         要了解和深入一件事我觉得应该是了解的全面一些比较的好,所以我这里写...
  • u010770041
  • u010770041
  • 2015年11月18日 23:33
  • 10161

通过bat脚本修改环境变量并且不用重启立即生效

通过bat脚本修改环境变量并且不用重启立即生效  系统中在C:\WINDOWS\system32下面,有一个exe文件setx.exe,通过此命令可以设置立即生效,有的系统没有此文件,需...
  • u011298599
  • u011298599
  • 2014年07月03日 22:32
  • 630
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序修改Windows环境变量生效
举报原因:
原因补充:

(最多只允许输入30个字)