V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
orangutan92
V2EX  ›  Windows

Windows 如何不重启更新 [用户环境变量] ?

  •  
  •   orangutan92 · 2019-05-10 00:43:29 +08:00 · 10206 次点击
    这是一个创建于 1807 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我装了个 nvs,想试一下,结果 cmd 里面不存在这个命令。

    我看了下,环境变量里面是设置到了用户环境变量,而系统环境变量的 path 是没有的。

    我谷歌搜了下,发现只能用 set 和 echo 的方式更新 [系统环境变量] 。而不能更新 [用户环境变量] 。

    请问怎么操作呢?

    12 条回复    2019-05-10 22:17:53 +08:00
    zwy100e72
        1
    zwy100e72  
       2019-05-10 00:45:30 +08:00
    如果是命令行程序,只需要新建一个窗口就应该生效了。
    生效之后还是需要用 set 验证下;或者 powershell 中访问 Env:\Path 验证下
    Trim21
        2
    Trim21  
       2019-05-10 00:46:26 +08:00
    系统属性-高级选项卡-环境变量 (或者我 win10 直接搜索环境变量也可以)
    然后上面的是用户变量下面的是系统变量
    geelaw
        3
    geelaw  
       2019-05-10 02:18:37 +08:00
    set 改变的是进程的环境变量。

    要更新用户的环境变量,你可以用 PowerShell 的 [System.Environment]::SetEnvironmentVariable 或者 sysdm.cpl 里面的编辑对话框( Cortana 搜索 Edit environment variables for your account 即可在不需要 UAC 的情况下打开这个对话框,或者使用命令 rundll32.exe sysdm.cpl,EditEnvironmentVariables )。

    当然,你修改了环境变量之后应该 SendMessageTimeoutW(HWND_BROADCAST, WM_SETTINGCHANGE, 0, L"Environment", SMTO_ABORTIFHUNG, 5000, NULL) 通知所有的 app 环境变量已经发生了变化。当然我们知道 Windows 的世界里什么乱七八糟的软件都有,并不是所有的软件都会处理这个消息(也不是所有更新环境变量的软件都会发送这个消息),幸运的是 Explorer 会处理该消息,所以你只要打开另一个 cmd 即可获得更新后的环境变量。

    为了应付所有书写很差的程序,你只要注销再登录,所有程序就会对环境变量的变化有反应。
    agdhole
        4
    agdhole  
       2019-05-10 03:36:26 +08:00
    注销最方便
    yidinghe
        5
    yidinghe  
       2019-05-10 07:12:11 +08:00 via Android
    环境变量修改后本就不需要重启电脑,只要重启进程即可。命令行也是一样,用 setx 更新环境变量后只需关闭命令行再重新打开。
    biggray0312
        6
    biggray0312  
       2019-05-10 07:28:43 +08:00 via Android
    杀死所有并重建 explorer.exe 进程,之后新开的 cmd 里就有新变量了
    newmind
        7
    newmind  
       2019-05-10 07:38:27 +08:00 via Android
    cmd 关掉再打开
    3CH0
        8
    3CH0  
       2019-05-10 08:40:21 +08:00
    重启 cmd
    dinghmcn
        9
    dinghmcn  
       2019-05-10 08:49:20 +08:00
    重启资源管理器,命令行关了重开
    orangutan92
        10
    orangutan92  
    OP
       2019-05-10 22:14:41 +08:00
    @dinghmcn 试过了不行呢
    orangutan92
        11
    orangutan92  
    OP
       2019-05-10 22:16:05 +08:00
    @zwy100e72 新建没有用,你这个是看系统变量的吧
    orangutan92
        12
    orangutan92  
    OP
       2019-05-10 22:17:53 +08:00
    @geelaw [System.Environment]::SetEnvironmentVariable 没有用,我就是想不注销,然后新建 cmd 生效。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1129 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 23:40 · PVG 07:40 · LAX 16:40 · JFK 19:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.