mir.pe (일반/밝은 화면)
최근 수정 시각 : 2024-11-06 22:39:20

레지스트리


파일:나무위키+유도.png  
은(는) 여기로 연결됩니다.
사전적 의미의 registry에 대한 내용은 등기소 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
참고하십시오.
파일:RegEdit.png 파일:win11_regedit.jpg
Windows 10의 레지스트리 편집기 모습 Windows 11의 레지스트리 편집기 모습
1. 개요2. 도입3. 구성4. 수정
4.1. *.reg
5. 주의 사항6. 기타7. 관련 문서

1. 개요

Microsoft Windows 시스템의 설정 및 구성 정보를 담고 있는 데이터베이스.
파일:Windows_Old_Regedit.png 파일:external/az648995.vo.msecnd.net/regedit-icon.png
Windows 8.1까지 사용한 아이콘 Windows 10부터 사용 중인 아이콘
편집기의 아이콘은 박살나거나 모이는 트위스티 퍼즐 모양으로, 레지스트리 하면 대번에 이 모양을 연상할 것이다. 여담으로 초창기 만들었던 도트 아이콘(Windows 3.1 시절이다)을 Windows 8.1까지 가져온 바 있다. 이 아이콘은 청록색이다.

레지스트리 편집기의 exe 명칭은 regedit으로, registry edit이다.

2. 도입

Windows 3.x까지는 시스템 구성 정보를 ini 파일이나 다른 파일로 만들어 저장하였다.[1] 다만, 여러 군데 퍼져 있어 관리가 불편하고, 파일의 특성 자체가 쉽게 수정 가능하고 손상될 수 있기 때문에 Windows 95부터 레지스트리라는 개념이 추가되었다.

3. 구성

키, 값으로 구성되어 있다. 키는 폴더와 비슷한 개념이고, 값은 파일과 비슷한 개념이다. 그렇다고 같은 개념은 아니다. 사용 방법 자체는 비슷하지만 다르다.

HKEY_CLASSES_ROOT - 확장자 설정, 기타
HKEY_CURRENT_USER - 사용자 설정(프로그램 설정도 여기에 포함된다)
HKEY_LOCAL_MACHINE - 모든 사용자의 설정을 담고 있으며 시스템 정보도 포함된다.
HKEY_USERS - 각각의 사용자 프로파일에 대한 HKEY_CURRENT_USER 키에 일치하는 서브키를 담고 있다.
HKEY_CURRENT_CONFIG - 실행 시간에 수집한 자료를 담고 있다. 이 키에 저장된 정보들은 디스크에 영구적으로 저장되지는 않고 시동 시간에 생성된다고 한다.

HKEY_PERFORMANCE_DATA - 런타임 성능 데이터 정보를 제공한다. 기본적으로는 레지스트리 편집기에서 보이지 않고, 윈도우 API의 레지스트리 검색 함수를 통해 볼 수 있다.
HKEY_DYN_DATA - 윈도우 95, 윈도우 98, 윈도우 Me에서만 존재하며 NT에서는 컴퓨터 관리의 성능 모니터로 대체되었다. 플러그 앤 플레이를 비롯한 하드웨어 장치, 네트워크 성능 통계에 대한 정보를 포함한다. 이런 정보는 하드디스크에 저장되지 않는다고 한다. 플러그 앤 플레이 정보는 컴퓨터가 시작할 때 구성되며 메모리에 저장된다.

값에는 6개의 형식이 있다.

문자열 값 (REG_SZ): 말 그대로 문자열 값이다.
이진값 (REG_BINARY): 말 그대로 00부터 FF까지의 바이트를 사용하는 이진값이다.
DWORD (REG_DWORD): 32비트 DWORD 값. 16진수나 10진수 값을 저장한다. 프로그램에서 참을 1, 거짓을 0으로 하여 저장하는 경우가 많다.
QWORD (REG_QWORD): 64비트 QWORD 값. Windows Vista에서 추가되었다. 이름 때문에 64비트 윈도우에서만 사용할 수 있을 것 같지만, 실제로는 32비트 윈도우에서도 사용할 수 있다. 64비트는 그저 데이터 길이가 64비트라는 것을 의미할 뿐이다.[2]
다중 문자열 값 (REG_MULTI_SZ): 문자열을 다중으로 표현할 수 있다. 줄바꿈이 가능한 것을 알 수 있다.
확장 가능한 문자열 값 (REG_EXPAND_SZ): 문자열 값이지만 환경 변수를 포함할 수 있다.

이외에 잘 사용되지 않는 값 형식이 있는데, 레지스트리 편집기 내에서는 생성할 수 없고, *.reg 파일로 강제로 만들면 볼 수 있다. 모두 레지스트리 편집기 내에서는 이진값으로 인식하며, Windows XP 서비스 팩 3 기준으로 값 데이타를 hex(0):로 설정하면 REG_NONE, hex(5):는 REG_DWORD_BIG_ENDIAN, hex(6):는 REG_LINK, hex(8):는 REG_RESOURCE_LIST hex(9):는 REG_FULL_RESOURCE_DESCRIPTOR, hex(a):는 REG_RESOURCE_REQUIREMENTS_LIST라는 형식으로 저장된다.

레지스트리 정보가 저장된 파일은 시스템 폴더의 config 폴더에서 찾을 수 있다. 이런 파일을 '하이브'라고 부른다. 레지스트리 편집기 내에서 하이브 파일을 편집기 내에 가져올 수 있다. 다만 HKEY_LOCAL_MACHINE 키에만 불러올 수 있다.
하이브 파일에 따른 레지스트리 경로
하이브 파일 위치 하이브 이름 레지스트리 경로 설명
%SystemRoot%\\System32\\config[3] SOFTWARE HKEY_LOCAL_MACHINE\SOFTWARE 윈도우 및 소프트웨어 전역 설정 정보[4]
SYSTEM HKEY_LOCAL_MACHINE\SYSTEM 시스템 전역 설정 정보
SECURITY HKEY_LOCAL_MACHINE\SECURITY[SYSTEM] 권한, 인증 도메인 등의 보안 관련 정보
SAM HKEY_LOCAL_MACHINE\SAM[SYSTEM] 사용자 별의 암호화된 비밀번호 저장소
%USERPROFILE%[7] NTUSER.DAT[8] HKEY_CURRENT_USER 각 윈도우 계정의 HKEY_CURRENT_USER 키

그리고 하이브 파일들은 커널에 의해 잠겨 있어서 건들 수 없다. 즉 열 수도 없고 삭제나 복사도 불가능하다.

4. 수정

레지스트리 편집기를 쓰면 된다. 윈도우+R 키를 누르면 실행창이 뜨는데. regedit를 입력하고 실행하면 된다. Vista 이후에는 관리자 권한은 필수다.

레지스트리 관련 API는 MSDN의 Registry Functions에서 확인하면 된다.

4.1. *.reg

reg 확장자를 이용해 클릭 한번으로 레지스트리에서 키/값을 추가하거나 수정 또는 삭제할 수 있다.
.reg 파일 내용 예시
Windows Registry Editor Version 5.00/REGEDIT4[9]

[HKEY_CURRENT_USER\\test]
"DWORD"=dword:00000001
"QWORD"=hex(b):02,00,00,00,00,00,00,00
"다중 문자열"=hex(7):e4,b2,11,c9,00,00,38,bb,90,c7,f4,c5,00,00,00,00
"이진"=hex:00,00,00,00,00,00,00,00
"문자열"="문자열"
"확장 가능한 문자열"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,\
00,74,00,25,00,00,00

[HKEY_CURRENT_USER\\test\\test2]
"문자열"="Hello, World!"

[(레지스트리 경로)]는 키를 설정하는 부분으로 그 아래에 키 안에서 값을 추가하거나 수정, 삭제할 수 있다. [-(레지스트리 경로)]으로 하면 해당 키는 삭제된다. 값 설정은 "(이름)"=(데이터)하면 되는데 형식에 따라 데이터가 달라진다. (데이터) 부분을 -로 설정하면 해당 값은 삭제된다.

레지스트리 편집기 내에서 선택한 키를 .reg 파일로 저장하여 내보낼 수 있다.

5. 주의 사항

레지스트리는 운영 체제의 설정 및 정보까지 담고 있는 데이터베이스라서 레지스트리 수정에 대한 지식이 없다면 수정하는 행위를 하지 않는게 좋다. 잘못 수정했다간 문제가 생기거나 심하면 부팅 불능으로 이어질 수도 있다. 이런 경우는 복구하면 되지만 복구조차도 할 수 없다면 윈도우를 재설치하거나 AS 수리점에 맡겨야 하는 위험 부담이 있다. 레지스트리를 수정하기 전에 미리 복구나 백업을 해두거나 찾기 기능을 활용하자.[10]

요즘은 system32[11] 폴더 삭제 낚시처럼 지식인에 올라오는 사람들에게 레지스트리를 지우라고 답변을 해 줘서 여기에 낚인 사람들이 컴퓨터 한대를 그냥 날려먹는 사례가 있다. 더 무서운 건 system32 폴더를 날려먹어도 부팅하면서 복구가 가능하지만 레지스트리를 몽땅 날리면 복구조차 어렵다는 것이다.[12]

사실, 이렇게 잘못 건드리면 치명적인 문제를 일으킬 수 있는 레지스트리를 아무나 접근할 수 있다는 것 자체가 문제점이자 장점이라고 볼 수 있다. macOS의 경우 레지스트리 같은 OS 내부 설정은 일반 사용자가 접근할 수 없도록 막아놓았다. 물론 관리자 권한을 요구하기는 하지만 윈도우 사용자의 태반은 관리자 계정이 기본 세팅이라(...)

6. 기타

Windows XP까지는 정품 인증을 미루거나 원래대로라면 지원되지 않았을 업데이트를 라이선스 위반해가며[13] 설치할 수 있게 만들어주는 등 시스템 해킹에 사용되었다. POSready 2009용 업데이트를 일반 XP에 설치하는 행위를 보고 MS에서는 '레지스트리 해킹'이라고 부르며 비판하는 인터뷰를 한 적이 있다. # POSready 2009도 현 시점에선 완전히 죽었으니 아무래도 좋은 소리가 되었다.


레지스트리 키들을 전부 삭제하면 어떻게 되는지 보여주는 영상이다. 다만 권한 등 문제로 전부 삭제할 수는 없다.

파일 탐색기 형식의 RegCool도 존재한다.

레지스트리의 성질을 이용한 게임도 등장했다. 자세한 건 Execution 문서 참고.

7. 관련 문서


[1] 다만 regedit.exe 자체는 3.1부터 추가되기는 하였으나 파일 형식 위주로 저장되었으며 INI가 많이 사용되었다. [2] 다만 윈도우 XP SP3에서 *.reg 파일로 값 데이타를 hex(b):로 설정하여 병합하면 XP에서도 REG_QWORD를 볼 수 있다. [3] 쉽게 말해 C:\\Windows\\System32\\config [4] 정품인증 정보 등 [SYSTEM] SYSTEM 권한이 없으면 접근 불가능 [SYSTEM] SYSTEM 권한이 없으면 접근 불가능 [7] 윈도우 10 기준 C:\\Users\\(사용자 이름) [8] 윈도우 사용자 계정마다 이 파일이 존재한다. [9] reg 파일 작성 시 맨위에 반드시 있어야 한다. 왼쪽은 Windows 2000 이상, 오른쪽은 Windows 9x, Windows NT 3.x, Windows NT 4.0. Windows 3.1용 레지스트리 파일은 REGEDIT이지만 현재 버전의 윈도우와는 호환되지 않는다. 여담으로 윈도우 7 기준 그냥 REGEDIT으로 시작하고 뒤에 아무 문자열을 넣어도 정상적인 reg 파일로 인식한다(...). [10] 단축기는 Ctrl+F, 혹은 '편집>찾기'로 들어가 찾고 싶은 레지스트리를 검색할 수 있다. [11] 참고로 System32는 윈도우에서 실행중이기 때문에 지워지지가 않는다. [12] 여담으로 레지스트리의 하이브 파일은 system32 내의 디렉토리인 config 안에 있다. [13] 클라이언트 윈도우를 임베디드 윈도우로 인식시키는 꼼수으로 엄연히 라이선스 위반이기는 하다. 다만 XP 자체가 퇴물인지라 MS에서도 딱히 손 쓸 이유가 없다. 또한 인터뷰에서도 라이선스 위반을 언급하지도 않았다.

분류