자유 게시판

카*님! PE 빌드 때 윈도우 10 버전 해결 방법

2021.11.20 02:11

suk 조회:599 추천:14

카*님 빌더 문제는 아닙니다

어제 사용기에서 버전 21H2 PE가 버전 2004로 나오는 문제로 골치를 썩이다가 생각한 것입니다

 

특히 윈도우 10에서 버전 2004 / 버전 20H2 / 버전 21H1 / 버전 21H2 가 전부 버전 2004 윈도우를 기반으로 하고,

버전을 결정하는 레지스트리도 버전 20H2 (2009) 부터 달라져서 뭔가 혼란스러운 듯 합니다

 

카*님께서 PE 부팅 때 실행되는 autorun.cmd 파일에 버전을 올바르게 표기되도록 추가하신 구문에

조금 더 추가하시면 PE의 버전 표기 문제가 해결될 듯 합니다

 

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"  /v DisplayVersion | find /i "20H2" && set DisplayVersion=20H2

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"  /v DisplayVersion | find /i "21H1" && set DisplayVersion=21H1

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"  /v DisplayVersion | find /i "21H2" && set DisplayVersion=21H2

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"  /v DisplayVersion | find /i "22H1" && set DisplayVersion=22H1

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"  /v DisplayVersion | find /i "22H2" && set DisplayVersion=22H2

If %DisplayVersion%==20H2 (Reg Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /t REG_SZ /v ReleaseId /d "20H2" /f)

If %DisplayVersion%==21H1 (Reg Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /t REG_SZ /v ReleaseId /d "21H1" /f)

If %DisplayVersion%==21H2 (Reg Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /t REG_SZ /v ReleaseId /d "21H2" /f)

If %DisplayVersion%==22H1 (Reg Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /t REG_SZ /v ReleaseId /d "22H1" /f)

If %DisplayVersion%==22H2 (Reg Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /t REG_SZ /v ReleaseId /d "22H2" /f)

위 전부는 원래 버전을 올바르게 표기하도록 하는 구문입니다

위 전부를 아래처럼 1줄로 하시면 간단해질 듯 합니다

 

for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v DisplayVersion') do Reg Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /t REG_SZ /v ReleaseId /d "%%a" /f

 

위는 간략하게 한 것 뿐이고, 어제 제가 경험한 버전 2004로 표기되는 문제를 해결하는건 아닙니다

다음이 버전 21H2 PE가 버전 2004로 나오는 문제를 해결하는 구문으로 제가 추가한 것입니다. 테스트해보니까 PE 버전이 잘 나왔습니다

버전 21H2만 아니라 버전 21H1도 빌드하여 부팅 확인했습니다

set build=

for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentBuild') do set build=%%a

if "%build%" == "19041" Reg Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /t REG_SZ /v ReleaseId /d "2004" /f

if "%build%" == "19042" Reg Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /t REG_SZ /v ReleaseId /d "20H2" /f

if "%build%" == "19043" Reg Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /t REG_SZ /v ReleaseId /d "21H1" /f

if "%build%" == "19044" Reg Add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /t REG_SZ /v ReleaseId /d "21H2" /f

 

여러분들께서 직접 버전 표기 문제 있는 PE의 wim 안에 Windows\System32\autorun.cmd를 수정하여 사용하셔도 되고

PE 빌더 압축 파일 안에 있는 Data\Custom\x64\AdditionalFiles\Windows\System32\autorun.cmd를 수정하셔서 PE를 만드셔도 됩니다.

 

아마 카*님께서 다음에 수정해주시겠지요 [추가: 오늘 바로 적용해주셨네요]

-> 카*님 구문은 DisplayVersion 레지스트리를 ReleaseId에 반영한 것인데요

제가 경험한 것은 사용기에 쓴대로 무슨 일인지 DisplayVersion 값이 존재하지 않았습니다.

그래서 처음 구문이 효과가 없어서 빌드 번호로 버전 표기되도록 추가한 것입니다 

 

빌더 프로그램이 카*님 파일만 있는 것은 아니라서, 빌더 프로그램에 관계없이 PE 버전이 제대로 표기되도록

저도 통합본 만들 때 레지스트리 수정해야 할 듯 합니다 (어제 올린 통합본은 위와 같이 수정하지 않으셔도 버전 21H2로 나오게 했습니다)

 

위 이야기는 통합본에서 윈도우 버전 표기 문제가 아니라 PE 버전 문제입니다.

통합본으로 윈도우 사용하실 분들은 신경쓰지 않으셔도 됩니다

XE1.11.6 Layout1.4.8