본문 바로가기
Windows 꼼지락.../레지스트리_리소스

레지스트리 하이브 로드 또는 언로드(Load or Unload Registry Hives) 작업

by OldMac 2021. 1. 18.
728x90

 

 

레지스트리 하이브 로드 작업 시에는 원본 레지스트리 DB를 백업하는 것이 좋습니다.

 

레지스트리 하이브 로드나 언로드를 제대로 설명한 포스팅이 없어, 레지스트리 개념을 정리하면서 이번 기회에 같이 포스팅합니다.

 

고수님들이 쉽게 설명한 포스팅이 없어 띄엄띄엄 공부하다 어느 순간 레지스트리 하이브 작업이 이해가 되어 지금은 당연하게 작업하지만, 생초보 시절에는 레지스트리 하이브 작업을 어떻게해야 하는지 몰라 수많은 구글링을 했던 기억이 아직도 생생합니다. 

 

생각해보면 왜 이렇게 레지스트리 하이브작업이 어려웠는지 모르겠습니다.

무엇을 먼저 공부해야 하는지 몰라서 오는 당연한 결과였지만...... ^^;

 

본격적으로 포스팅을 작성하기전에 우선 레지스트리에 대한 이해가 좀 필요합니다.

 

영어로 된 사이트에서 제가 공부할 목적으로 정리한 포스팅입니다. 사이트에 접속하여 구글번역기를 이용하면 어느 정도 이해를 할 수 있습니다. 레지스트리에 대해 한글로 설명된 사이트는 구글링하시면 많이 있습니다. 

 

모든 설명은 그 동안 개인적으로 머리디밀기한 내용이라 정확한 개념을 가지고 포스팅하는 부분이 아니니 오류가 있을 수 있습니다. 이 포스팅은 레지스트리 하이브 로드와 언로드 과정까지만 설명합니다.

 

 

1. 레지스트리 하이브 로드와 언로드 작업은 왜 하는가?

레지스트리 하이브 작업은 PE를 제작하거나 수정할 경우와 만능윈도우(Windows 이미지 배포) 및 제작, 다른 언어로 된 윈도우를 지역화(한글화)할 때 레지스트리 하이브 작업을 병행합니다.

 

그래서 일반 윈도우 사용자는 레지스트리 하이브 작업이 필요없습니다. 프로그래머분들은 이 작업을 하는지 잘 모르겠습니다. 이 부분은 저의 경험으로 설명하는 부분입니다. ^^;

 

 

2. 레지스트리 하이브 로드와 언로드 작업은 어디서 작업해야 할까?

저의 경우, 초보 시절 고수님들이 PE에서 작업을 해야한다고 해서 당연히 PE에서만 작업했는데,

어느 정도 하이브 작업에 자신감이 생긴 후에는 사용 윈도우에서 작업합니다.

 

고수님들이 왜 PE에서 작업하라고 했는지 곰곰히 생각해 보면,

레지스트리 권한 문제와 사용 윈도우의 레지스트리를 꼬이게 만들 수 있어서  그런 것 같습니다.

 

저도 실제 사용 윈도우에서 작업하다보면 하이브 언로드가 제대로 안되는 경험도 있고, 

또 하이브 로드를 엉뚱한 곳에 로드할 때도 무수히 많았던 것 같습니다. ^^;

 

이런 이유로 개인적으로 초보분들은 PE에서 작업할 것을 추천합니다.

 

 

3. 레지스트리 하이브 작업에 필요한 준비물
  • PE
  • *******.reg 파일
  • ISO 파일에서 Wim 파일을 추출할 수 있는 프로그램
  • Wim 파일
  • ESD -> Wim으로 변환할 수 있는 프로그램
  • Wim(ESD) 파일을 마운트할 수 있는 프로그램
  • 레지스트리를 편집할 수 있는 프로그램
  • 7zip

이외 작업에 따라 프로그램이 더 필요하지만, 간단한 레지스트리 수정은 이 정도면 될 것 같습니다.

 

보통은 PE 제작하시는 분들이 이런 종류의 프로그램들은 PE에 기본으로 추가하여 만드십니다. 하지만 Wim마운트와 관련된 프로그램 중에 닷넷을 사용할 경우, PE 용량문제로 프로그램을 포함하지 않을 수 있습니다. 이런 PE의 경우에는 사용 윈도우에서 먼저 Wim 파일을 마운트하여 필요한 파일만 PE에 복사한 다음, PE로 부팅하시면 됩니다.

 

그리고 각각의 프로그램들 사용법까지 설명하면 포스팅이 길어지니, 포스팅 중에 언급된 프로그램들은 따로 설명하지 않습니다.

 

 

4. 레지스트리 하이브 로드는 어떤 파일을 가지고 해야 할까?

레지스트리 하이브 개념

하이브로 간주되는 레지스트리 키는 모두 "HKEY" 로 시작됩니다. 윈도우의 기본 레지스트리 편집기(Regedit.exe)를 실행하면, 첫 화면 왼쪽에 있는 5가지 레지스트리 폴더를 하이브라고 합니다.

 

레지스트리 하이브 디렉토리 구조(예제 : HKEY_CURRENT_USER\Control Panel\Desktop\Colors\Menu)를 참고로 살펴보면 아래와 같습니다.

 

  • HIVE : HKEY_CURRENT_USER
  • KEY : Control Panel
  • SUBKEY : Desktop
  • SUBKEY : Colors
  • VALUE : Menu

※ 참조 사이트

https://www.lifewire.com/what-is-a-registry-hive-2625986

 

 

레지스트리가 저장되는 경로와 DB파일

레지스트리는 윈도우 버전에 따라 여러 개의 DB파일로 저장되고, 저장된 위치 또한 다를 수 있지만 모두 로컬 컴퓨터에 저장됩니다.

 

저장되는 레지스트리 DB파일과 경로를 살펴보면, 아래의 레지스트리 DB파일들은

%SystemRoot%\System32\Config\에 저장됩니다.

 

  • Sam HKEY_LOCAL_MACHINE\SAM
  • Security HKEY_LOCAL_MACHINE\SECURITY
  • Software HKEY_LOCAL_MACHINE\SOFTWARE
  • System HKEY_LOCAL_MACHINE\SYSTEM
  • Default HKEY_USERS\.DEFAULT
  • Userdiff – 평상 시에는 하이브에 연결되어 있지 않고, 운영체제를 업그레이드할 때에만 이용됩니다.

그리고 다음 레지스트리 DB파일들은 사용자별 프로파일 폴더에 저장되며,

사용자에 특화된 'HKEY_CURRENT_USER(사용자 레지스트리 하이브)'는 Ntuser.dat에 저장됩니다. 

 

  • %UserProfile%\Ntuser.dat – HKEY_USERS\<사용자 SID> (HKEY_CURRENT_USER로 연결)
  • %UserProfile%\Local Settings\Application Data\Microsoft\Windows\Usrclass.dat (경로는 운영 체제의 언어에 따라 지역화됩니다.) – HKEY_USERS\<User SID>_Classes (HKEY_CURRENT_USER\Software\Classes)

참고로 경로 환경변수는 

%SystemRoot%  ->  C:\Windows

%WinDir%  ->  C:\Windows

%UserProfile%  ->  C:\Users\사용자 계정

 

※ 출처

https://ko.wikipedia.org/wiki/%EC%9C%88%EB%8F%84%EC%9A%B0_%EB%A0%88%EC%A7%80%EC%8A%A4%ED%8A%B8%EB%A6%AC

 

레지스트리 하이브 로드가 가능한 DB파일

위 설명들을 참조하여 정리합니다.

 

레지스트리 DB 경로는 쉽게 이해할 수 있게 'C드라이브' 경로로 설명합니다.

보통 레지스트리 하이브 작업은 Wim파일을 마운트한 다음, 필요한 DB파일만 복사하여 수정하거나 교체합니다. 그래서 사용자마다 사용하는 하이브 레지스트리 경로는 제각각입니다.

 

레지스트리 하이브 로드가 가능한 DB파일은 아래와 같습니다.

 

  • C:\Windows\System32\config\Sam
  • C:\Windows\System32\config\Security
  • C:\Windows\System32\config\Software
  • C:\Windows\System32\config\System
  • C:\Windows\System32\config\Default
  • C:\Users\사용자 계정\Ntuser.dat
  • C:\Users\사용자 계정\Local Settings\Application Data\Microsoft\Windows\Usrclass.dat


5. 레지스트리 하이브 로드 과정

하이브 로드는 레지스트리 하이브 최상위 디렉토리에서만 가능합니다. 레지스트리 하이브는 아래와 같이 총 5가지입니다.

 

  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_USERS
  • HKEY_CURRENT_CONFIG

그러나 하이브 로드는 최상위 5가지 레지스트리 하이브 중에

'HKEY_LOCAL_MACHINE' 와 'HKEY_USERS' 2가지 하이브에만 로드가 가능합니다.

 

보통 고수들이 이용하는 하이브 로드는 'HKEY_LOCAL_MACHINE' 입니다. 참고로, 레지스트리 하이브는 각각 짧게 줄여서 아래와 같이 사용하는데, 스크립트 언어로 된 명령어 처리에서 많이 사용하는 것 같습니다.

 

HKEY_CLASSES_ROOT 레지스트리 하이브 : HKCR

HKEY_CURRENT_USER 레지스트리 하이브 : HKCU

HKEY_LOCAL_MACHINE 레지스트리 하이브 : HKLM

HKEY_USERS 레지스트리 하이브 : HKU

HKEY_CURRENT_CONFIG 레지스트리 하이브 : HKCC

 

하이브 로드 과정

우선 가지고 계신 PE로 부팅하고 '하이브 로드'를 하기 위해 편집할 Wim파일을 마운트합니다.

 

레지스트리가 저장된

'Sam / Security / Software / System / Default / Ntuser.dat / Usrclass.dat' 파일들 중에

본인이 수정할 DB파일만 원하는 폴더에 복사합니다.

 

그 다음 Windows 기본 '레지스트리 편집기'를 실행합니다.

 

  1. 실행 창 실행 : Windos 키 + R
  2. 실행 창에 "Regedit" 입력

나머지 하이브 로드 작업과정은 캡처 이미지로 대신합니다.

 

 

예를 들어 하이브 로드한 레지스트리 DB에 새로운 레지스트리를 추가할 경우

참고 레지스트리는 '파일 탐색기'를 다시 시작하는 레지스트리입니다.

 

▶ 수정 전 

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\Rexplorer]
"Icon"="imageres.dll,-1401"
"Position"="Bot"
"MUIVerb"="탐색기 다시 시작(E)"


[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DesktopBackground\Shell\Rexplorer\command]
@="C:\\Windows\\Setup\\Kor\\ReExplorer.exe"

 

 수정 후

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\TEST\Classes\DesktopBackground\Shell\Rexplorer]
"Icon"="imageres.dll,-1401"
"Position"="Bot"
"MUIVerb"="탐색기 다시 시작(E)"


[HKEY_LOCAL_MACHINE\TEST\Classes\DesktopBackground\Shell\Rexplorer\command]
@="C:\\Windows\\Setup\\Kor\\ReExplorer.exe"


제가 하이브 로드할 레지스트리 DB가 "Software"이기때문에
수정 전 레지스트리 부분에 "SOFTWARE" 키를 하이브 로드 키인 "TEST"로 변경했습니다.
이렇게 하이브 로드 키를 변경하여야 이 레지스트리 경로가 제대로 추가가 됩니다.

 

 

이렇게 하이브 로드해서 레지스트리를 추가하거나 삭제합니다.

모든 작업이 끝났으면 하이브 언로드를 하여야 작업이 마무리됩니다.

 

 

6. 레지스트리 하이브 언로드 과정

하이브 언로드는 본인이 추가한 하이브 로드 키를 선택한 다음,

파일 -> 하이브 언로드를 하시면 됩니다.

 

이렇게 하이브 언로드를 해야 수정한 레지스트리가 레지스트리 DB에 저장되며, 저장된 레지스트리 DB는

마운트된 Wim파일의 레지스트리 DB와 교체해 주시면 됩니다.

 

 

공부해야할 부분이 몇 가지 있지만, 최대한 쉽게 설명하려고 노력했습니다. ^^;

천천히 따라해 보면서 이해하시면 됩니다.



다음은 초보시절에 개인적으로 공부한 사이트 자료와 활동하는 포럼에서 'ACOM'님이 하이브 로드에 대해 답변한 내용입니다.

 

질문 : 레지 하이브 편집에 대해 공부 할 수 있는 곳을 알고 있는지요?

ACOM님 답변 

 

 

  • 키 이름 본인이 알아보기 쉬운 이름 적습니다.

 

  • 키이름 xoxo 왼쪽 마우스로 원클릭해야 하이브 언로드 활성화 됩니다.

 

 

  • NTUSER.DAT <--- 숨김, 보호파일입니다.
  • 숨김파일 보이기 한 후 하이브 방법은 위와 똑같고 키이름 역시 HKEY_LOCAL_MACHINE 아래에 놓입니다.

 

급하게 사진캡쳐해서 올리느라 두서없습니다.

하이브 로드 언로드 <--방법만 간단히 숙지하시면 편집방법은 일반 레지스트리 수정 편집과 같습니다.

 

질문이 어려워요 ^^;;; 하이브 로드는 한 번 해보시면 간단한데;;

 

저도 잘 모르지만 간단히 설명드리자면

위 그림이 HIVE (바이너리 형태의 레지스트리 데이타베이스) 입니다.

 

실사용 윈도우 경우 프로그램, 앱 설치시 레지스트리값이 위 파일에 자동 저장 /관리 되지만

PE나 만고(만능윈도우)같은 경우 저장 /관리가 안되고 항상 같은 레지스트리값 고정......

하이브 로드를 이용해 수동편집 사용자 편의에 맞는 윈도우 설정 값을 유지하는 방법 같습니다 ;;;;

 


 

이 자리를 빌어 ACOM님에게 다시 한번 감사의 인사를 드립니다. 꾸~~~~벅 ㅋㅋ



출처 : http://mjkr.tistory.com/10

 

 

마지막으로 참조 동영상

 

7-zip 압축 프로그램으로 .wim 이미지 간단한 편집 방법

윈도우 포럼의 선우님이 PE에서 레지스트리 하이브 작업

윈도우 포럼의 션샤인님 레지스트리 하이브 작업 강좌

Windows 레지스트리(Registry)에 대한 개념정리(펌)

 

이 자리를 빌어 윈도우 포럼의 선우님과 션샤인님께 감사 인사드립니다. 설명이 미흡한 부분에 대해 두 분의 강좌를 보시면 도움이 될 것 같아 링크를 남깁니다.

 

대강 레지스트리 하이브 로드와 언로드 방법에 대해 마무리합니다.

읽어보시느라 고생했습니다. 꾸~~~~벅

 

 

728x90

 

 

 

댓글