Windows 如何設定 %SystemRoot% 變數?

Windows 如何設定 %SystemRoot% 變數?

%SystemRoot% 環境變數包含 Windows 目錄的路徑。 (例如c:\windows

SystemRoot沒有配置Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment,它是自動地放。

C:\Windows現在,通常在 Windows 10 上,此目錄在 NTFS 磁碟上具有大小寫。

腳本測試(*)失敗後,我們注意到:

  • 具有相同作業系統版本的 Windows 10 (LTSC 1809 17763.3887)
  • 有些框使用%SystemRoot% == C:\WINDOWS(全部大寫,儘管磁碟上的目錄是C:\Windows
  • 一些盒子使用%SystemRoot% == C:\Windows(磁碟上的目錄的情況)
  • 我們與 ProcessExplorer 進行了交叉檢查:大小寫差異已經存在於進程的環境區塊中wininit.exe,因此它不會在某處被覆蓋。

問:

SystemRoot是從任何特定註冊表項讀取的值的基礎嗎?

什麼可以解釋這種差異?


(*):需要明確的是,測試無論如何都被破壞了 - 您不應依賴 Windows 上的路徑大小寫。

答案1

它是在啟動過程中設定的。它沒有在註冊表中設置,因為作業系統啟動過程需要知道在哪裡可以找到註冊表檔案(和其他作業系統檔案),然後才能從註冊表中讀取它們。

https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/boot-options-in-windows

Windows 啟動選項儲存在基於 BIOS 和基於 EFI 的電腦上的啟動設定資料 (BCD) 儲存體中。

PS C:\> bcdedit.exe /enum | select-string "device|root"

device                  partition=\Device\HarddiskVolume1
device                  partition=C:
osdevice                partition=C:
systemroot              \WINDOWS

PS C:\> $env:systemroot
C:\WINDOWS

在較舊的 Windows 作業系統上,它可能位於 boot.ini 中

相關內容