%SystemRoot%环境变量包含指向Windows目录的路径。(例如c:\windows
)
SystemRoot
不是在Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
中配置的,而是自动设置的。
现在,通常在Windows 10上,这个目录在NTFS磁盘上有大写的C:\Windows
。
在脚本测试(*)崩溃后,我们注意到:
%SystemRoot% == C:\WINDOWS
(大写,尽管磁盘上的目录是C:\Windows
)。%SystemRoot% == C:\Windows
(磁盘上dir的情况)wininit.exe
进程的环境块中,因此它不会在某个地方被覆盖。是否从任何特定注册表项读取SystemRoot
值的基?
有什么可以解释这种差异呢?
(*):要明确的是,测试无论如何都被打破了--你不应该依赖Windows上的路径外壳。
发布于 2023-03-02 16:36:37
它是在引导过程中设置的。它没有在注册表中设置,因为操作系统引导过程需要知道在哪里找到注册表文件(和其他OS文件),然后才能从注册表中读取它们。
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中
https://serverfault.com/questions/1125145
复制相似问题