精华内容
下载资源
问答
  • 程序修改Windows环境变量生效

    千次阅读 2006-06-15 18:58:00
    修改Windows环境变量生效bruce | 五月 27,2005 12:37http://blog.9zi.com/post/1/805 不少程序需要添加各自的环境变量,方便定制性使用。用得最多的是用户指定目录如JAVA_HOME等变量,程序中可以根据获取变量%JAVA_...

    修改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环境变量立即生效

    万次阅读 2018-12-27 18:56:18
    1.编辑/修改 环境变量 2.进入cmd,输入set path=test 3.退出这个cmd窗口就生效了。   验证方法: 可以在第一次进入cmd 的时候echo %path% 然后set path=test退出后, 再进入cmd,再echo%path%...

    1.编辑/修改 环境变量

    2.进入cmd,输入set path=test

    3.退出这个cmd窗口就生效了。

     

    验证方法:

    可以在第一次进入cmd 的时候echo %path%

    然后set path=test退出后,

    再进入cmd,再echo%path%

    展开全文
  • 命令行使windows环境变量立即生效

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

    文章来源:http://blog.csdn.net/huanglong8/article/details/53574040

    用户变量和环境变量对于Windows系统级应用开发有着至关重要的意义。

    最重要的一项功能便是我们可以通过DOS命令行或运行时指令进行本地过程调用,从而避免诸多路径相关的问题,例如冗长的路径字符串造成的溢出,短路径未设置,长路径带空格,路径前后双引号命令无效等。

    对于大型集成系统而言,集成框架,集成脚本等一系列第三方应用,也需要设置很多环境变量,这一点体现在它们的doc文档或readme中,这对于集成方案是不利好的,也对用户体验是不良好的。

    在最近的一次系统级产品研发中,需要解决此项问题,即是一次安装,自动设置。解决环境变量的设置,可以通过命令行,注册表来完成,但若要使其生效,需要注销或重新登录操作系统,这无疑是要解决的重要问题。

    针对环境变量及相关资料可继续参考如下链接:
    http://m.blog.csdn.net/article/details?id=44462313

    设置环境变量可以用以下几种命令参考:

    1.Reg注册表文件

    Windows Registry Editor Version 5.00
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
    "MyTestValue"="C:\Path\Dir"

    这种办法简单可行,就是不能对已存在的值进行追加,例如追加Path环境变量

    2.reg命令行

    reg add "HKCU\Environment" /v MyTestValue /t reg_sz /d "C:\Path\Dir" /f

    具体的可参照reg /?来进行查看。
    如果需要设置Path的追加值,则需要先查询Path,在进行修改。
    注意这里不能用echo %path%来进行查询,因为这里的path是全部的搜索路径,即包括系统环境变量的,也包括用户环境变量的。所以正确的做法应该还是查询注册表。

    :: 查询注册表项值存入到mypath临时变量中
    for /f "delims=" %%i in (
    'reg.exe query 
    "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" 
    /v "Path"'
    ) do set mypath="%%i" 
    :: 对mypath进行截取字符串,去除前30个字符,去除后一个字符
    set mypath=%mypath:~30,-1%
    :: 对mypath追加路径
    set mypath=%mypath%;C:\Path\Dir
    :: 重新设置并覆盖到注册表中
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%mypath%" /f

    3.wmi命令行

    使用wmic命令查询较为方便,但针对如下情况:

    for /f "delims=" %%i in ('wmic.exe ENVIRONMENT where "name='Path' and username='<system>'" get VariableValue') do set mypath="%%i"

    进行查询赋值时,发现经过了三次赋值,最终赋值为””空而结束,在查阅了相关for循环指令后,都没能解决,感情兴趣的朋友可以试试,并分享下解决方法。执行后:
    这里写图片描述
    出现这个问题后,就没在忘后面写了,其实剩下的内容很简单

    wmic ENVIRONMENT where "name='Path' and username='<system>'" set VariableValue="%mypath%;C:\Path\Dir"

    4.立即生效设置的说明

    有网友说如果是Win7以下系统,通过wmic设置后,是直接自动生效的,对于已加载的cmd或explorer当然是无法做到的。
    win7以上系统wmic设置后,仍然无法立即生效,这里查阅相关资料和其他网友的研究,可以通过setx进行设置

    setx Path /K "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path\" /M

    这个命令执行后,在新打开的cmd或explorer中,已更新的环境变量就已设置成功了。通常如果,需要在当前的cmd下也设置成功,可以补充SET Path = %mypath%即可。可针对已运行explorer或其他已打开的进程,则无能为力。

    5.发送windows消息进行更新广播

    关于SendMessageTimeout可参考
    http://baike.baidu.com/link?url=3BJdatQNLK0rqfR5XBSFO6afozQTKl06d0O0r7ZYhoc_YxnkLxhZ_OMMDLx20SUBTjcFiSloeywG9WqS_LKvAohhdaDPDA6LAjcuCYekHma

    SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,0,(LPARAM)TEXT(“Environment”),SMTO_ABORTIFHUNG,5000,&ret);

    如果是Unicode编码要注意转码TEXT或L,否则无效,多字节的话强转就可以了。但是经过测试发现,只有在新启动的窗口中,新的环境变量被更新了,已运行的窗口仍然没有被更新,虽然此函数设置了通知方式为广播,但仍未生效,感兴趣的朋友可以尝试利用pid获取窗口句柄进行再测试,这里就不搞了。
    经过以上各种方法尝试,设置环境变量在集成系统项目中也是举步维艰,存在bug的一步,整理了网上搜罗的资料和项目中尝试的方法,也算是功德圆满了。要搞它,这么多方法,应该总有一个可以吧,再不行,咱们就弹框让用户不爽的重启吧。

    注意:
    1.批处理和DOS命令,%%和%的区别。
    2.C的字符编码还是要小心以下,遵照规范,否则即便使用了也不会生效。

    展开全文
  • Windows环境变量生效

    2012-11-15 23:50:58
    关于windows环境变量的问题。 在CMD窗口中set的值只是临时变量 通过在CMD窗口中reg add产生的值,修改了注册表,但是却没有实时生效。此时再打开一个CMD窗口,set显示所有环境变量,仍然没有生效。 reg add "HKEY...

    关于windows环境变量的问题。

    在CMD窗口中set的值只是临时变量

    通过在CMD窗口中reg add产生的值,修改了注册表,但是却没有实时生效。此时再打开一个CMD窗口,set显示所有环境变量,仍然没有生效。

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /t reg_sz /d "%~dp0jdk-1.6" /f

    使用setx来生成环境变量,则可以实时生效!!!谨记

    setx JAVA_HOME "%~dp0jdk-1.6" -m

     

    ---------------------------------------------------------------------------------

    但是有些东西的环境变量仍然是不能实时生效的,只能重启:

    MicroSoft的解释,为什么服务的环境变量不能实时生效

    这是因为在本地系统帐户下运行的服务从 Services.exe 进程继承其环境。当 Windows 启动时,Services.exe 流程接收本地系统帐户的环境设置。由于 Services.exe 进程不使用 Windows 消息,它接收消息,以表明的值已更改 Windows 启动后,Services.exe 进程不会更新其环境设置。您不能强制确认对本地系统帐户的环境的动态更改正在运行的服务。


    展开全文
  • 在dos下输入 echo %path% 查看 然后设置生效 set path=C 关闭dos已经生效 可以再次进入dos echo %path% 查看
  • 类似linux中可以用source /etc/profile的作用 修改完环境变量后,进入命令行,输入:set PATH=C: ,关闭命令行。 再次打开命令行,输入:echo %PATH% ,可以发现“我的环境变量已经生效
  • 当开发android应用时,需要在windows环境下设置java的环境变量。通常我们将java的安装路径添加到系统环境变量path中去,然后重启之后,在命令提示符中输入: java -version 。 显示的是java的jdk版本和其他的信息...
  • 很多安装程序在安装完成后并不要求重启Windows,而新的环境变量已经生效了,可见在不重启Windows的情况下让环境变量生效是完全可行的。 可我搜索如何不需重启Windows环境变量生效的方法,只找到三类方案: 下载一...
  • windows 环境变量设置立即生效的办法

    千次阅读 2016-06-20 16:40:20
    先到我的电脑>属性>高级>环境变量,添加新环境变量或修改已有的环境变量,然后运行“DOS命令提示符”或runcmd,假设要修改PATH变量,不管PATH的原值是什么,在DOS窗口直接把PATH修改为任意值,关闭DOS窗口,这时,我...
  • 不用担心DOS窗口中的修改会影响环境变量的真实值,因为DOS窗口中环境变量只是windows环境变量的一个副本而已。当系统检测到副本中的环境变量值,和真实值不一样,会强制刷新Windows的环境变量...
  • Windows下配置的环境变量生效

    万次阅读 2015-08-21 09:59:19
    Windows下配置的环境变量生效
  • 不想重新启动计算机而直接使修改后的环境变量生效,搜到一些提示,方法如下: 在“我的电脑”中修改完环境变量(系统或用户皆可)保存退出。在cmd窗口,输入"path="回车。在新的cmd窗口输入"path"即可看到更新后的...
  • windows修改完环境变量立即生效

    万次阅读 2017-09-26 11:32:01
    先到我的电脑>属性>高级>环境变量,添加新环境变量或修改已有的环境变量,然后运行“DOS命令...再次打开DOS窗口,输入:echo %PATH% ,这时可以发现,我的电脑>属 性>高级>环境变量里PATH已经在Windows全局生效了。 不
  • Windows不重启使环境变量生效

    千次阅读 2014-08-26 09:09:20
    操作方法: (1)进入DOS命令提示符,输入:set PATH=C: (2)关闭DOS窗口。再次打开DOS窗口 (3)输入:echo %PATH% ,可以发现设置的 PATH 值已经生效
  • 修改环境变量后,进入doc命令行,set path='c',这样可以临时修改环境变量,之后关闭doc。这样可以使系统重新读取环境变量 ,修改也就生效了 转载于:https://www.cnblogs.com/wlf0523/p/9335331.html...
  • 版本:2010 工程:installscript MSI ...2.修改完环境变量之后必须重启windows系统环境变量才有效。 3.但重启windows系统是十分不友好的安装方式。 解决方法: 如下的源代码: //修改JAVAHOME为例 szRegBuffer =
  • “环境变量”中增加或修改环境变量后,本来是需要进行Windows重启,环境变量才会生效,但是很多情况下不能重启Windows,那么这个时候就需要想个方法在不重启也要使设置的环境变量生效。 由于DOS窗口中的环境变量只是...
  • Windows修改java环境变量生效

    千次阅读 2018-10-31 11:17:00
    Windows修改java环境变量生效 1、运行---regedit 2、HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSof t \ Java Runtime Environment 3、删除不需要的
  • 环境变量生效

    千次阅读 2010-06-22 00:01:00
    最近开始学Java。我们主要学Java Application和Java Applet两个分类。...后来上网搜了一下,得到如下结果: 通过修改注册表,修改了系统的环境变量,但是不会立即生效,除非在【我的电脑】上点击右键,然后
  • windows10设置环境变量生效,如果你试过了网上的各种方法都不行,请重启电脑。。。蛋疼的windows,我就是这么好的。
  • 在cmd下输入 set PATH=C: 关闭dos 打开cmd输入echo %PATH% 这样系统会刷新环境变量从而无需重启环境变量生效了。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,271
精华内容 26,508
关键字:

windows环境变量生效