因为在添加环境变量的时候,不小心将原环境变量覆盖掉的了,导致很多程序不能正常运行~~

#添加到系统环境变量
setx path "%PATH%;F:\Learning\ComputerScience\Code\GO;D:\Program Files\Go\bin"

这是所犯的错误,%PATH%并没有产生变量的效果(原本是想在PATH后面追加变量的)

那么怎么恢复修改的环境变量呢?

Windows环境变量简单介绍

Windows系统中有两种环境变量:用户变量和系统变量。系统变量与用户变量的PATH是为了告诉系统可执行文件放在什么路径(平常执行程序的路径,要放在PATH里面,当系统需要的时候就会去path查找)

查找规则

  1. windows系统在执行用户命令时,若用户未给出文件的绝对路径,则首先在当前目录下寻找相应的可执行文件、批处理文件等;
  2. 若果当前目录找不到对应文件名的程序,在系统变量的PATH的路径中,依次寻找对应的可执行程序文件(查找顺序是按照路径的录入顺序从左往右寻找的,最前面一条的优先级最高,如果找到程序就停止寻找,后面的路径不再执行);
  3. 如果系统变量的PATH的路径找不到,再到用户变量的PATH路径中寻找(如果系统变量和用户变量的PATH中同时包含了同一个命令,则优先执行系统变量PATH中的命令)

需要注意的点:

  1. 环境变量没有区分大小写,例如path跟PATH是一样的

  2. 系统变量对所有用户有效;用户变量只对当前用户有效

  3. 用户变量与系统变量,名称是变量,值是里面的内容,也就是通过变量存储了想要存储的内容,方便调用

  4. 每次新加了命令以后,要确定保存了。再重启CMD,否则命令不生效的。被修改的系统Path只是同步到了注册表中,并未立即生效,所以可以使用cmd命令行重新得到系统Path。我们下面通过的恢复PATH的方法大都是依赖于还未关闭的终端,在这些未关闭的终端或者IDE中去获取环境变量~~~

  5. 在CMD里要输出环境变量 ECHO %变量名%

命令行添加环境变量

#setx命令:在用户或系统环境创建或修改环境变量。能基于参数、注册表项或文件输入设置变量。
#使用/M表示在系统写入,不/M表示写入用户变量
#格式: SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]
#主要是是var和value

#代码编写位置(管理员权限)
setx GOPATH "F:\Learning\ComputerScience\Code\GO" /M
#若被拒绝:(不过这样仅仅是写入用户变量)
setx GOPATH "F:\Learning\ComputerScience\Code\GO"
#添加到系统环境变量
setx path "%PATH%;F:\Learning\ComputerScience\Code\GO;D:\Program Files\Go\bin"
#注意哦,使用setx修改系统path一定要谨慎,
#如果是在环境变量后面追加值,一定不要忘记带上原变量,否则我们会覆盖掉原变量,而失去原变量。如果要追加在后面的话,一定要setx path "%PATH%;new value"
#

查看用户环境变量和系统变量

  • 查看所有的用户变量
reg query HKCU\Environment /v *
  • 查看用户变量中的path
reg query HKCU\Environment /v PATH
  • 查找系统变量中所有的变量:
REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v *
  • 查询系统变量中的path变量:
REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path

恢复误修改的PATH

千万不要重启电脑!

未重启

利用还未关闭的IDEA/PyCharm/Goland/cmd/终端恢复

#被修改的系统Path只是同步到了注册表中,并未立即生效,所以可以使用cmd命令行重新得到系统Path。
#如果你在修改系统Path前打开了以上任意IDE,无论你怎么修改环境Path都不会生效,必须重启IDE才能生效。
#由此,我们可以利用未关闭的IDE得到修改之前的Path变量的值。
#在终端或者IDE的Terminal窗口输入以下命令:
echo %Path%

使用备份注册表恢复

#无论使用图形界面还是cmd命令行修改系统Path,都是立即同步到注册表文件的,所以,没有备份注册表也不用看了。
#使用regedit打开注册表;
#找到系统Path:
#注册表路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
#复制Path变量。

powershell

该方法意外的好用,找回了遗失的环境变量~~

#用Windows PowerShell运行以下命令获取路径环境变量
Get-ItemProperty -Path "HKCU:\Environment"

利用用户配置备份文件恢复

这个方法适用于有用户配置文件备份或系统备份的情况下,在位于Users文件夹下的用户名子文件夹中找到名为NTUSER.DAT的文件,然后用记事本打开这个文件,里面就包含了旧路径环境变量,通过查找PATH相关语句,就可以获取路径环境变量了

C:\Users\86063\NTUSER.DAT

已重启

这种情况下,在注册表中搜索名为Environment的项,并检查结果中出现的相关选项下是否尚包含路径环境变量。如果注册表中的环境变量被清空,那么可以在相同版本的win10注册表中,查找并复制默认路径环境变量值,进行恢复。

使用win10默认Path

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

refer