win10由%AppData%、path引申出来对环境变量的探究,与修改注册表的一些血的教训

养成好习惯,点个赞再走

有问题,欢迎私信、评论,我看到都会回复的


  • 我在看PicGo在配置手册中时,看到这么一句话:PicGo的配置文件默认在Windows系统的 %APPDATA%\picgo\data.json

后来知道 %APPDATA% 是Windows设定的变量,默认情况下指向应用程序存储数据的位置

  • 再加上我在学习各种编程语言的过程中,发现经常需要配置环境变量path,虽然根据网络上的教程一步步的配置成功了,但感觉自己就像一个提线木偶,

后来知道环境变量path作用为:当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。

于是萌生了探究win10系统中变量、环境变量、用户变量、系统变量(都可以称之为环境变量)到底是个什么玩意?必须给它整的明明白白


阅读前友情提醒:

  • 随着我探究的一步步深入,发现注册表(window系统的核心数据库)在其中扮演着超级重要的角色
    我的文章由浅入深,我相信你会看懂的

  • 的文章要照顾到萌新们,所以了解环境变量窗口、注册表窗口打开方式的老司机们可以自行跳过目录一、目录二

  • 配置环境变量path有兴趣的,可以仔细阅读目录三中的path的玩法

  • 想深入理解环境变量与注册表到底有什么交情的探索者们,请仔细阅读目录四

  • 最后的最后,如果你有通过注册表将C盘下用户文件夹放到D盘去的想法,切莫随意跟着网络上的教程尝试,目录五为你带来我牺牲了我当前登录用户而留下的教训!!!

目录一:注册表打开方式

键盘同时按下 win + r ,打开运行窗口,在输入框中输入regedit

鼠标点击确定,或者按回车,注册表编辑器就打开了

打开的注册表有5个项,我们在电脑上的环境变量在注册表中都有对应的项

目录二:环境变量打开方式

image-20200308214111535

  1. 如果你的电脑桌面有这个图标,

鼠标右键此电脑,点击属性

  1. 如果你的电脑桌面上没有看到这个图标,

键盘同时按下 win + e,打开文件资源管理器,鼠标右键此电脑,点击属性

上述两个方式都可以打开系统窗口,点击 高级系统设置

打开系统属性窗口,选择高级,点击环境变量

环境变量窗口就打开了

目录三:带你直观感受环境变量

比如环境变量**%AppData%**,

键盘同时按下 win + r,打开运行窗口,输入**%AppData%**

就可以直接进入它所指向的路径:C:\Users\用户名\AppData\Roaming(默认情况下是应用程序存储数据的位置)

%XXX%的玩法

进入环境变量窗口

如果电脑只有你一个人使用(只有一个用户名)

无论是对用户变量,还是对系统变量的修改,对于你而言无差别

现在我在上半窗口的用户变量,新建一个环境变量,

然后点击确定,出现下图所示,代表你新建操作成功了

确定,确定,

然后你键盘同时按下 win + r,打开运行窗口,输入%zgh%,

点击确定或回车,就直接打开这个D:\zgh文件夹了

path的玩法

在环境变量窗口中,用户变量、系统变量都有Path路径(当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。)

对哪个Path操作都一样(现在用Windows的都是个人电脑了,一般只有一个用户)

当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。

怎么理解这句话呢?我以一个程序举例

我的桌面上有tim程序的快捷方式,一般是直接点击图标,才能启动它
在这里插入图片描述

为什么快捷方式可以启动tim呢,我们右键,属性,快捷方式,可以看到它指向的路径为:tim安装路径\Bin\QQScLauncher.exe

快捷方式实际上调用了tim程序启动程序(QQScLauncher.exe)

.exe文件在Windows中为可执行文件

快捷方式链接着可执行文件

其实Path与快捷方式有相似之处,只不过Path在电脑中是全局的

若我在path中添加tim安装路径\Bin\QQScLauncher.exe程序所在的上一级目录:tim安装路径\Bin

双击打开任意Path,或者选中任意Path点击编辑

确定,确定,确定

其余程序就可以在它的文件路径下启动tim了,我们也可以在随意目录下打开cmd,输入QQScLauncher.exe或者QQScLauncher,就可以启动tim了

当我们在DOS窗口下输入一个命令,它会先在 Path 中去查找你的命令是否存在

  • 若存在,就会直接运行可执行文件
  • 若不存在,就在当前目录下找
    然后当前目录中找到了也可以运行,若当前目录中都找不到,就会报错

目录四:环境变量与注册表的对应,我们来认识它们

  • 提醒1:%XXX%中的XXX是不区分大小写的,比如说%SYSTEMROOT%%SystemRoot%含义相同
  • 提醒2:在下面路径中出现的用户名,即:登录用户名,它就是你第一次打开电脑输入的用户名(也是你每一次开机都会出现的登录名,比如我的用户名就是张国豪)
  • 提醒3:以下提到的环境变量仅仅只是win10系统安装到你电脑上时就有的环境变量(不包括你在使用电脑的过程中,自己配置的环境变量、安装的软件程序自行配置的环境变量)

环境变量窗口中

  • 上半部分为用户变量,对应到注册表的项为:HKEY_CURRENT_USER\Environment

  • 下半部分为系统变量,对应到注册表的项为:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment

用户变量

环境变量窗口中:

对应注册表窗口中 HKEY_CURRENT_USER\Environment

它们两者是互相影响的,

更改一个,另一个就会同时变化

我们可以看到,

  • Path 中配置的环境变量**%USERPROFILE%\AppData\Local\Microsoft\WindowsApps**的实际路径为:%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
  • %TEMP%、%TMP% 的实际路径为:%USERPROFILE%\AppData\Local\Temp

%TEMP%、%TMP% 对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其它应用程序则需要 TMP。

补充:%USERPROFILE%是在注册表中定义的环境变量

系统变量

环境变量窗口中:

image-20200308222522139

对应注册表窗口中 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment

image-20200308222258185

我们可以看到,

  • %ComSpec% 的实际指向为:%SystemRoot%\system32\cmd.exe

    就是我们平时打开的控制台cmd

  • Path 配置了五个环境变量,它们都是以 %SystemRoot% 开头

  • PSModulePath 配置了两个环境变量,一个以 %ProgramFiles%,另有一个是以 %SystemRoot% 开头

  • %TEMP%、%TMP% 的实际路径为:%USERPROFILE%\AppData\Local\Temp

  • %windir% 的实际路径为:%SystemRoot%

中出现了**%SystemRoot%、%USERPROFILE%、%ProgramFiles%**,那么这些玩意什么呢?

注册表中定义的环境变量(常用)

  • %HOMEDRIVE%、%SystemDrive% 默认对应:C:\ (C盘)

当我们打开C盘,会看到以下5个文件夹

  • %USERPROFILE% 默认对应:C:\Users\用户名 (用户文件夹,当前用户的配置文件的位置)
  • %SystemRoot% 默认对应:C:\Windows (Windows文件夹,操作系统目录的位置)
  • %ProgramFiles% 默认对应:C:\Program Files (Program Files文件夹)
  • %ProgramFiles(x86)% 默认对应:C:\Program Files (x86) (Program Files(x86)文件夹)
  • %ProgramData%、%ALLUSERSPROFILE% 默认对应:C:\ProgramData (Program Data文件夹,所有“用户配置文件”的位置)

还有:

  • %AppData% 默认对应:%USERPROFILE%\AppData\Roaming
    默认情况下应用程序存储数据的位置

目录五:友情提醒(血的教训)

打开我的用户文件夹:C:\Users\zgh

用户即Users,zgh是我当前登录用户名
在这里插入图片描述
勾选资源管理器上方的 查看,勾选 隐藏的项目后,还可以看到隐藏了的AppData文件夹

对于这些文件夹,

MicrosoftEdgeBackups文件夹,我看了一下,他就是一个空文件夹
我在Microsoft社区,一位好心人格雷是这么说的:

Microsoft Edge每天都会备份您存储的收藏夹和阅读列表。

以前,Win10遇到一个问题,即收藏夹在更新过程中会神奇消失。这是Microsoft帮助防止这种情况的方法。

这个文件夹就不管它了

可以直接移动的若干个文件夹

“3D对象、视频、图片、文档、下载、音乐、桌面、保存的游戏、联系人、链接、收藏夹、搜索”文件夹

Windows是允许用户移动的(可以使用 移动到操作,或者右键–属性–位置–修改输入框中的地址
在这里插入图片描述

AppData文件夹、%USERPROFILE%

然而对于AppData文件夹,复制、移动操作都是无法成功的

花费了近两天时间,我从网络上看到的方法几乎都是注册表的三个地方进行修改,然而这些方法基本上都很陈旧、语嫣不详、基本上你敢改电脑就敢出问题

列出以下三个避雷区:

(1)打开注册表,定位到 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
在这里插入图片描述
可以看到,AppData或者其下许多文件夹的路径都与 %USERPROFILE% 有关

因为%USERPROFILE%这个路径比较特别,它不是一个普通的文件夹,而是用户配置文件的根目录,用户的所有特定数据,包括文件和注册表信息都保存在这里。

由于这个特殊性,每个用户的配置文件位置没有保存在用户自己的注册表中,而是保存在系统注册表中的。

(2)打开注册表,定位到 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

在这里插入图片描述
而Shell Folders中又与User Shell Folder中有所不同,%USERPROFILE%都变成了实际路径

网络上会教你修改(1)、(2)中看到的所有%USERPROFILE%及其实际路径,修改到D盘去;然而修改后,Windows上自带的应用基本都打不开了,而且其余你下载的软件都会有或少的小问题

(3)打开注册表,定位到 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

在这里插入图片描述
这里就记录了系统中所有帐户的配置文件路径,找到你当前用户所对应的SID项之下,其中的 “ProfileImagePath” 字符串值就是 %USERPROFILE% 的值了

但是ProfileImagePath千万千万修改不得啊,修改之后,你重启电脑,就会发现原本使用的用户没了,而且提前备份好的注册表无法导入到注册表中!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章