Windows는 %SystemRoot% 변수를 어떻게 설정합니까?

Windows는 %SystemRoot% 변수를 어떻게 설정합니까?

그만큼%SystemRoot% 환경 변수Windows 디렉터리에 대한 경로가 포함되어 있습니다. (예 c:\windows: )

SystemRoot에 구성되어 있지 않습니다 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.자동으로세트.

C:\Windows이제 일반적으로 Windows 10에서 이 디렉터리는 NTFS 디스크에 케이스가 있습니다 .

스크립트 테스트(*)가 중단된 후 우리는 다음을 발견했습니다.

  • 동일한 OS 버전 Windows 10(LTSC 1809 17763.3887)
  • 일부 상자는 %SystemRoot% == C:\WINDOWS(디스크상의 디렉토리가 임에도 불구하고 모두 대문자 C:\Windows)를 사용합니다.
  • 일부 상자 사용 %SystemRoot% == C:\Windows(디스크에 있는 디렉토리의 경우)
  • ProcessExplorer를 통해 교차 확인했습니다. 대소문자 차이는 이미 프로세스의 환경 블록에 존재하므로 wininit.exe어딘가에서 재정의되지 않았습니다.

큐:

SystemRoot특정 레지스트리 키에서 읽은 값의 기준이 됩니까 ?

이 차이를 무엇으로 설명할 수 있을까요?


(*): 분명히 말하자면 테스트는 실패했습니다. Windows에서는 경로 케이싱에 의존해서는 안 됩니다.

답변1

부팅 과정에서 설정됩니다. OS 부팅 프로세스는 레지스트리에서 레지스트리 파일(및 기타 OS 파일)을 읽기 전에 레지스트리 파일(및 기타 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 OS에서는 아마도 boot.ini에 있을 것입니다.

관련 정보