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 中

相关内容