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千萬千萬修改不得啊,修改之後,你重啓電腦,就會發現原本使用的用戶沒了,而且提前備份好的註冊表無法導入到註冊表中!!!

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