0 / 6
레지스트리 루트 키(Registry Root Keys)
레지스트리 편집기를 열면 맨 위에 루트 키 다섯 개가 보인다. 이 중 데이터를 실제로 담은 키는 HKLM과 HKU 둘이고 나머지 셋은 이 둘 안의 한 곳을 가리키거나 두 곳을 합쳐 보여 준다.
레지스트리는 Windows가 사용자, 프로그램, 하드웨어 설정을 모아 두는 계층형 데이터베이스다. 다른 컴퓨터의 레지스트리에 원격으로 연결하면 HKLM과 HKU 두 개만 보인다.
1 / 6
HKLM: 하이브 파일을 불러온 실제 키
HKLM(HKEY_LOCAL_MACHINE)을 펼치면 SAM, SECURITY, SOFTWARE, SYSTEM 키가 있다. 각 키는 C:\Windows\System32\config 폴더에 있는 같은 이름의 파일을 부팅할 때 불러온 하이브다. 컴퓨터를 쓰는 모든 사용자에게 똑같이 적용되는 설정이 여기에 모인다. 부팅할 때마다 새로 만드는 HARDWARE 같은 키는 그림에서 뺐다.
2 / 6
HKU: 사용자마다 하이브 파일을 불러온 실제 키
HKU(HKEY_USERS) 아래에는 로그인한 사용자마다 SID를 이름으로 쓰는 키가 있다. 사용자가 로그인하면 Windows가 그 사용자의 하이브 파일 두 개를 불러온다. 사용자 폴더(C:\Users\사용자 이름)의 NTUSER.DAT는 SID 키가 되고 같은 폴더 안 AppData 아래의 UsrClass.dat는 SID 뒤에 _Classes가 붙은 키가 된다. 맨 위 .DEFAULT 키는 새 사용자의 기본값이 아니라 Windows 서비스 등이 쓰는 시스템 계정(LocalSystem)의 설정이다.
3 / 6
HKCU: HKU 안의 현재 사용자 키를 가리킨다
HKCU(HKEY_CURRENT_USER)에는 따로 저장된 데이터가 없다. 현재 사용자의 키인 HKU\S-1-5-21-…-1001을 다른 이름으로 보여 줄 뿐이다. 그래서 프로그램은 SID를 몰라도 HKCU라는 이름으로 자기가 실행 중인 계정(보통은 로그인한 사용자)의 설정을 찾는다.
4 / 6
HKCC: HKLM 안의 하드웨어 프로필을 가리킨다
HKCC(HKEY_CURRENT_CONFIG)에도 따로 저장된 데이터가 없다. HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current를 다른 이름으로 보여 줄 뿐이다. 지금 쓰는 하드웨어 구성이 기본 구성과 다른 점만 담는다.
5 / 6
HKCR: 두 곳의 Classes를 합쳐 보여 준다
HKCR(HKEY_CLASSES_ROOT)은 파일 확장자를 어떤 프로그램과 연결할지, COM 구성 요소를 어디에 등록했는지 같은 정보를 보여 준다. COM은 한 프로그램이 다른 프로그램의 기능을 불러 쓰게 해 주는 Windows의 부품 규격이다. 이 정보는 HKLM\SOFTWARE\Classes(모든 사용자 기본값)와 HKU\S-1-5-21-…-1001_Classes(현재 사용자 설정) 두 곳에 나뉘어 있다. HKCR은 둘을 합쳐 한 화면으로 보여 주고 같은 항목이 양쪽에 있으면 사용자 쪽 값이 보인다.
6 / 6
HKCU에 쓴 값은 HKU에서도 보인다
프로그램이 HKCU\Control Panel\Desktop에 바탕 화면 그림 값(WallPaper)을 쓴다. HKCU는 HKU\S-1-5-21-…-1001의 다른 이름이라서 같은 값이 HKU\S-1-5-21-…-1001\Control Panel\Desktop에도 그대로 보인다. 값이 한쪽에서 다른 쪽으로 옮겨 가는 것이 아니라 처음부터 한 키에 저장되고 결국 NTUSER.DAT 파일에 남는다.