Table of Contents
Abstract
본 글에서는 Windows의 버전 관련 정보를 얻을 수 있는 레지스트리를 알아보고, 기존 레지스트리로는 구분할 수 없는 10과 11을 구분할 수 있는 또 다른 레지스트리에 대해 찾아보고 소개하는 내용을 담았다. 혹여, Windows 10과 11을 구분하고자 하는 사람들에게 도움이 되길 바란다.
Windows Registry where it was stored
윈도우 레지스트리의 어느 곳에서 윈도우 버전 관련 정보를 얻을 수 있는지 알아보자.
Common Informations
먼저 일반적인 Windows 버전 관련 정보를 얻을 수 있는 레지스트리 키는 아래와 같다.
Windows | Key |
7 | HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion |
10 | |
11 |
주요 Registry Value를 살펴보면 아래 표와 같다.
Value Name |
Windows | Desc. |
||
7 | 10 | 11 | ||
BuildLab | ○ | ○ | ○ | 현 시스템의 전체 빌드 버전 문자열 |
BuildLabEx | ○ | ○ | ○ | 현 시스템의 좀 더 상세한 전체 빌드 버전 문자열 - [major].[minor].[build].[branch].[date]-[time] |
CurrentBuild | ○ | ○ | ○ | 현 시스템의 메이저 빌드 버전 |
CurrentBuildNumber | ○ | ○ | ○ | 현 시스템의 메이저 빌드 버전 |
CurrentMajorVersionNumber | × | ○ | ○ | 현 시스템의 NT 커널 메이저 버전 번호 - 10부터 새로 만들어짐 |
CurrentMinorVersionNumber | × | ○ | ○ | 현 시스템의 NT 커널 마이너 버전 번호 - 10부터 새로 만들어짐 |
CurrentVersion | ○ | ○ | ○ | 현 시스템의 NT 커널 버전 - 8.1부터 6.3으로 고정, 10부터는 위의 Major와 Minor를 이용하는 것을 추천 |
DisplayVersion | × | ○ | ○ | 현 시스템의 운영체제 버전 - 1803, 1903, 20H2, 21H2 같은 문자열 |
EditionID | ○ | ○ | ○ | Home, Professional, Education 등 에디션 ID 정보 - 평가판의 경우 Eval이 붙음 |
InstallDate | ○ | ○ | ○ | Unix 타임스탬프 형식의 윈도우 설치 시간 |
InstallTime | × | ○ | ○ | Windows Filetime 형식의 윈도우 설치 시간 |
ProductName | ○ | ○ | ○ | 현 시스템의 Windows 제품 이름 - Windows 10 Pro, Windows 7 Ultimate 등 흔히 윈도우 버전 정보라고 말하는 대상 |
RegisteredOwner | ○ | ○ | ○ | 현 시스템의 등록자 및 소유자 - 보통 설치 당시에 입력한 사용자 이름 혹은 로그인한 MS 계정의 이메일 |
SystemRoot | ○ | ○ | ○ | 시스템 파일이 저장된 경로 - 환경변수 %SystemRoot% |
UBR | ○ | ○ | ○ | 업데이트 빌드 리비전(Update Build Revision) - OS Build 22000.376에서 376 위치에 해당하는 값 |
- Windows 7 Ultimate SP1의 CurrentVersion 예하 Values
- Windows 10 Pro의 CurrentVersion 예하 Values
- Windows 11 Pro의 CurrentVersion 예하 Values
Windows OS Name
What problem in Windows 11
위의 "Windows 11 Pro의 CurrentVersion 예하 Values"로 보면 알 수 있지만 Windows 11임에도 불구하고 CurrentMajorVersionNumber가 정수 10 값을 가지며, ProductName도 "Windows 10 Pro"라는 문자열을 갖는다. 처음엔 Windows 10에서 Windows 11로 업그레이드 한 탓에 이런 흔적이 남은 것인가 싶었지만 처음부터 Windows 11로 설치해도 Windows 10으로 남는다는 것이 문제였다.
How to get a correct information
그래서 Windows 11임을 구분할 수 있는 다른 레지스트리 값을 찾아야 했다. 그 결과 Windows의 부팅 설정 데이터(BCD, Boot Configuration Data) 레지스트리에서 해답을 찾을 수 있었다. BCD 관련 레지스트리 키 경로는 아래와 같다.
HKEY_LOCAL_MACHINE\BCD00000000
BCD00000000의 서브 키중 Objects 라는 키가 있다. Objects 키 밑으로 여러 GUID 형식의 서브 키가 존재한다.
HKEY_LOCAL_MACHINE\BCD00000000\Objects\{<GUID>}
"{9dea862c-5cdd-4e70-acc1-f32b344d4795}" GUID는 Windows 부팅 관리자(Windows Boot Manager)를 나타내는 GUID 형식의 Identifier다. 이는 7, 10, 11 모두 동일하다. Objects의 서브 키중 이러한 GUID를 갖는 서브 키가 존재하고, 그 밑으로 23000003이라는 서브 키가 존재한다. 7, 10, 11, 어느 컴퓨터든 마찬가지로 모두 존재한다. 23000003 서브 키는 Element라는 값을 가지고 있는데, Element에는 GUID 형태의 문자열이 들어있다. 아래 그림에서 Element에 저장된 GUID는 아래 표와 같다. 이 값은 컴퓨터마다 다르다.
Key | HKLM\BCD00000000\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\23000003 |
Value | Element |
Type | REG_SZ |
Data | {8e9b6a69-2e21-11ec-aa74-cef1fc3af2a1} |
다시 BCD00000000\Objects에서 이 GUID를 서브 키 이름으로 갖는 서브키를 찾아보자.
{8e9b6a69-2e21-11ec-aa74-cef1fc3af2a1}
이 서브 키의 Elements\12000004를 찾아가면 Windows 11이라는 문자열이 저장된 것을 볼 수 있다.
Key | HKLM\BCD00000000\Objects\{8e9b6a69-2e21-11ec-aa74-cef1fc3af2a1}\Elements\23000003 |
Value | Element |
Type | REG_SZ |
Data | Windows 11 |
정리하면 아래 그림과 같다.
Close
이상으로 Windows 버전 관련 정보를 얻을 수 있는 윈도우 레지스트리에 대해 알아봤다. Windows 버전 관련 정보가 저장된 레지스트리 위치와 값들의 의미에 더해 기존에 알려진 Windows NT\CurrentVersion으로는 Windows 11을 구분할 수 없다는 문제에 대한 해결책도 함께 알아봤다. 아직 Windows 11이 정식 출시된 지 얼마 안 됐기 때문이 아닐까 싶다. 훗날 CurrentMajorVersionNumber 값이 11(0xB)가 되는 날이 오지 않을까 예상해본다.
참고로 BCD 관련 레지스트리는 Windows 7도 존재하며 7의 경우 "Windows 7", 10의 경우 "Windows 10"으로 나타난다.
Windows 11 밈 중에 겉 모습만 바뀌고 속은 Windows 10이라는 걸 재밌게 표현한 짤들을 많이 볼 수 있다. 이 밈을 다시 한번 느끼게 해준 재밌는 경험이었다.
'Digital Forensics > Windows Registry' 카테고리의 다른 글
vk 셀 복구하기 (0) | 2020.04.18 |
---|---|
Registry에서 최근 로그온 사용자 찾기 (0) | 2020.04.09 |
Shellbags 생성/갱신 기준 (0) | 2020.03.25 |