Computer >> 컴퓨터 >  >> 시스템 >> Windows

Windows 레지스트리 기초 완벽 가이드: 구조부터 가상화, 편집기 활용법까지

Windows 레지스트리란 무엇인가?

Windows 레지스트리(Registry)는 마이크로소프트 윈도우 운영체제의 각종 설정과 옵션을 저장하는 중앙 데이터베이스입니다. 하드웨어 정보, 운영체제 소프트웨어 설정, 대부분의 일반 응용 프로그램 구성, 사용자 계정 정보, PC 환경 설정 등 시스템 운영에 필요한 거의 모든 정보가 이곳에 기록됩니다.

사용자가 제어판 설정, 파일 연결, 시스템 정책 또는 설치된 프로그램의 옵션을 변경할 때마다 그 내용이 레지스트리에 반영되어 저장됩니다. 또한 레지스트리는 커널의 동작 상태를 들여다볼 수 있는 창구 역할도 하며, 성능 카운터나 현재 활성화된 하드웨어 같은 실시간 정보를 제공합니다.

레지스트리는 왜 만들어졌을까?

Windows 레지스트리는 이전까지 Windows 프로그램들의 구성 설정을 저장하던 수많은 INI 파일들을 정리하기 위해 도입되었습니다. INI 파일들은 시스템 곳곳에 흩어져 있어 관리와 추적이 매우 어려웠습니다. 레지스트리는 이러한 설정을 한곳에 체계적으로 모아 관리 효율성을 크게 높였습니다.

Windows 레지스트리 기본 구조

레지스트리는 다음과 같은 5개의 루트 키(Root Key)로 구성됩니다.

  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_USERS
  • HKEY_CURRENT_CONFIG

루트 키 아래에는 하위 키(SubKey)가 존재합니다. 하위 키는 그 자체로 또 다른 하위 키를 가질 수 있으며, 최소 하나 이상의 값을 포함하는데 이를 기본값(Default Value)이라고 합니다. 하나의 키와 그에 속한 모든 하위 키 및 값 전체를 묶어 하이브(Hive)라고 부릅니다.

레지스트리는 디스크상에서 system32\config 폴더 안에 여러 개의 독립된 하이브 파일 형태로 저장되어 있습니다. Windows가 시작되거나 사용자가 로그온할 때마다 이 하이브 파일들이 메모리로 읽혀집니다. 하이브 파일이 물리적으로 어디에 저장되어 있는지 확인하려면 아래 경로를 참고하세요.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\HiveList

레지스트리 데이터 타입

  • REG_SZ: SZ는 null 종료 문자열(zero-terminated string)을 의미합니다. 유니코드와 ANSI 문자를 모두 담을 수 있는 가변 길이 문자열입니다.
  • REG_BINARY: 0과 1로 이루어진 이진(binary) 데이터를 저장합니다.
  • REG_DWORD: 더블 워드(Double Word) 타입으로, 32비트 숫자 값이며 0부터 2³²까지의 값을 가질 수 있습니다.
  • REG_QWORD: 쿼드러플 워드(Quadruple Word) 타입으로, 64비트 숫자 값입니다.
  • REG_MULTI_SZ: 하나의 값에 여러 개의 null 종료 문자열을 묶어서 저장합니다.
  • REG_EXPAND_SZ: %SystemRoot%처럼 환경 변수에 대한 미확장 참조를 포함하는 null 종료 문자열입니다.

Windows 레지스트리 가상화(Registry Virtualization)

Windows Vista부터 파일 가상화와 함께 레지스트리 역시 가상화가 적용되었습니다. 덕분에 Windows XP 시절과 달리 레지스트리가 불필요하게 비대해지는 문제가 크게 줄었으며, 이 기능은 Windows 7 이후 버전에서도 계속 유지되고 있습니다.

가상화란 응용 프로그램이 Windows 파일 시스템의 시스템 폴더와 레지스트리의 '시스템 전역 키(machine wide keys)'에 직접 쓰는 것을 차단하는 기술입니다. 단, 이것이 표준 사용자 계정이 응용 프로그램을 설치하거나 실행하는 것까지 막는 것은 아닙니다.

Windows Vista 이후 버전에서 UAC(사용자 계정 컨트롤)는 레지스트리 가상화 기능을 활용하여 다음 하이브의 하위 키에 쓰려는 시도를 리디렉션합니다.

HKEY_LOCAL_MACHINE\Software

응용 프로그램이 이 하이브에 쓰기를 시도하면, 실제로는 사용자별 위치인 아래 경로에 기록됩니다.

HKEY_CLASSES_ROOT\VirtualStore\Machine\Software

이 과정은 아주 조용히, 눈에 띄지 않게 진행됩니다. 응용 프로그램이나 사용자 모두 이런 일이 벌어지고 있다는 사실을 알아차리기 어렵습니다.

이것이 바로 레지스트리 가상화이며, 매우 유용한 보안 기능 중 하나입니다.

참고로 Windows Vista 이후에 도입된 또 다른 핵심 기술인 커널 트랜잭션 관리자(Kernel Transaction Manager)도 언급할 가치가 있습니다. 이를 통해 구현되는 트랜잭셔널 레지스트리(Transactional Registry)는 일종의 레지스트리 롤백을 가능하게 합니다. 다만 이 기능은 레지스트리 편집기에는 구현되어 있지 않으며, 트랜잭션 처리 기반의 견고한 응용 프로그램을 개발해야 하는 개발자들을 위해 설계된 기능입니다.

레지스트리 편집기(Registry Editor) 활용법

Windows 10/8/7/Vista에서 레지스트리를 직접 다룰 때 사용하는 기본 도구는 레지스트리 편집기(Registry Editor)입니다. 실행 방법은 간단합니다. 시작 메뉴 검색창에 regedit를 입력하고 Enter 키를 누르면 됩니다.

레지스트리 작업 시에는 각별히 주의해야 합니다. 확인 창이나 저장 알림 없이 변경 사항이 즉시 반영되기 때문입니다. 잘못된 수정은 시스템 오류로 이어질 수 있으므로, 작업 전 백업을 권장합니다.

특히 HKEY_LOCAL_MACHINE\System\CurrentControlSet 하이브는 주목할 필요가 있습니다. 이 키의 내용은 Windows 부팅에 필수적이어서 백업이 자동으로 유지되며, 문제가 발생했을 때 안전 모드로 부팅한 후 '마지막으로 성공한 구성(Last Known Good Configuration)'을 선택하면 복원할 수 있습니다.

또한 Windows 10 v1703 이상에서는 레지스트리 편집기의 주소 표시줄을 이용해 원하는 레지스트리 키로 바로 이동할 수 있어 작업 편의성이 크게 향상되었습니다.

함께 읽으면 좋은 글

  1. 손상되거나 깨진 레지스트리 복구 방법
  2. 시작 메뉴 및 작업 표시줄 레지스트리 트윅
  3. 레지스트리 백업 및 복원 방법
  4. 레지스트리 변경 사항 모니터링하기
  5. 레지스트리 편집기 여러 인스턴스 동시에 열기
  6. Windows 레지스트리 경로에 이모지가 사용된다는 사실, 알고 계셨나요?