검수요청.png검수요청.png

레지스트리 (컴퓨터)

해시넷
(레지스트리에서 넘어옴)
이동: 둘러보기, 검색

레지스트리(registry)란 윈도우에서 사용하는 시스템 구성 정보를 저장한 데이터베이스이다. 단어 자체로는 등기소라는 뜻을 가지고 있다. 프로세서의 종류, 주기억장치의 용량, 접속된 주변장치의 정보, 시스템 매개변수, 응용소프트웨어에서 취급하는 파일 타입과 매개변수 등이 기억된다.

개요[편집]

레지스트리는 마이크로소프트 윈도우 32/64비트(bit) 버전과 윈도우 모바일 운영체제의 설정과 선택항목을 담고 있으며, 주기억장치의 용량, 접속된 주변장치의 정보, 시스템 매개변수, 응용 소프트웨어에서 취급하는 파일의 타입과 각종 매개변수 등의 정보가 계층적으로 관리되고 있다. 사용자가 제어판 설정, 파일 연결, 시스템 정책 또는 설치된 소프트웨어 변경 시 이에 따른 변경 사항들이 레지스트리에 반영되어 저장된다. 또한 성능 카운터와 현재 사용하고 있는 하드웨어와 같은 런타임 정보를 노출하면서 윈도우를 커널의 운영체제 안에 제공한다. 이전에는 시스템 정보를 담고 있는 Autoexec.bat 파일Config.sys 파일, 윈도 디렉터리의 다양한 *.ini 파일의 역할이었으나, 시스템 여러 곳에 퍼져있어 찾기가 쉽지 않았기 때문에 도입되었다.[1]

특징[편집]

구조[편집]

키, 값[편집]

레지스트리는 키와 값의 두 가지 기본 요소를 포함하고 있다.

  • (key) : 폴더와 비슷하다. 각 키는 수많은 서브키를 포함할 수 있는 서브키를 가질 수 있고, 계급 수준을 지시하기 위해 백 슬래시를 사용하면서 윈도즈(Windows)라는 경로 이름과 비슷한 구문으로 가리킨다.
  • (value) : 키 안에 들어 있는 이름/자료이다. 값은 여러 키로부터 따로 참조할 수 있다. 이름에 백 슬래시를 포함할 수 있으나 키 경로와의 구별이 어려울 수 있다. 레지스트리 값을 찾아서 이용하는 윈도우 API 명령어는 부모 키를 정의하는 핸들과 값 이름을 경로에서 별도로 가져온다. 레지스트리는 수많은 다른 값을 가지고 있다.
레지스트리의 값 종류
REG_NONE 종류 없음
REG_SZ 문자열 값
REG_EXPAND_SZ 확장할 수 있는 문자열 값. 환경 변수를 포함할 수 있다.
REG_BINARY 이진값 (임의의 데이터)
REG_DWORD/
REG_DWORD_LITTLE_ENDIAN
DWORD 값(32비트) 정수 (0 ~ 4,294,967,295 [232 – 1]) 리틀 엔디언
REG_DWORD_BIG_ENDIAN DWORD 값 (32 비트) 정수 (0 ~ 4,294,967,295 [232 – 1]) 빅 엔디언
REG_LINK 심볼 링크 유니코드
REG_MULTI_SZ 다중 문자열 값 고유한 문자열의 배열
REG_RESOURCE_LIST 리소스 목록 플러그 앤 플레이 하드웨어 열거 및 구성
REG_FULL_RESOURCE_DESCRIPTOR 리소스 서술자
REG_RESOURCE_REQUIREMENTS_LIST 리소스 요구 목록
REG_QWORD/
REG_QWORD_LITTLE_ENDIAN
QWORD 값(64비트 정수)
빅/리틀 엔디언 또는 정의되지 않음
윈도우 2000에 도입

하이브[편집]

레지스트리는 수많은 논리를 구분하는 하이브(hive)로 나눌 수 있다. 하이브는 모두 HKEY로 시작하며, 보통 윈도우 API 정의로 이름이 지정된다. HK로 시작하는 이름들은 HKCU, HKLM과 같이 짧은 3~4개의 이름을 줄인 것이다. 하이브의 종류는 다음과 같다.

하이브의 종류
HKEY_CLASSES_ROOT (HKCR) Windows 탐색기를 사용하여 파일을 열 때 정확한 프로그램이 열리도록 한다.
파일 연결, OLE 객체 클래스 ID와 같은 등록된 응용 프로그램의 정보를 담고 있다.
HKEY_CURRENT_USER (HKCU) 현재 로그인한 사용자의 구성 정보 루트를 담고 있다.
HKEY_LOCAL_MACHINE (HKLM) 컴퓨터의 특정 구성 정보로 H/W, S/W의 설정 정보이다.
H/W를 구동할 때 필요한 드라이버 설정 사항이기도 하다.
HKEY_USERS
(HKU)
컴퓨터에서 사용 중인 모든 사용자 프로파일에 대한 HKEY_CURRENT_USER 키에 일치하는 서브키를 담고 있다.
HKCU에 저장된 정
HKEY_CURRENT_CONFIG 실행 시간에 수집한 자료를 담고 있다.
이 키에 저장된 정보는 디스크에 영구적으로 저장되지 않고 시동 시간에 생성된다.
HKEY_PERFORMANCE_DATA 런타임 성능 데이터 정보를 제공한다.
이 키는 레지스트리 편집기에 보이지 않지만 윈도우 API의 레지스트리 명령어를 통해 볼 수 있다.
HKEY_DYN_DATA 윈도우 95, 윈도우 98, 윈도우 Me에서만 사용된다.
플러그 앤 플레이를 비롯한 하드웨어 장치, 네트워크 성능 통계에 대한 정보를 포함한다.
이 하이브의 정보는 하드디스크 드라이브에 저장되지 않고 플러그 앤 플레이 정보는 컴퓨터가 시작할 때 구성되어 메모리에 저장된다.

편집[편집]

수동편집[편집]

레지스트리는 윈도우 디렉터리에 있는 regedit.ext 또는 regedt32.exe를 실행하여 마이크로소프트 윈도우에서 수동으로 편집할 수 있지만, 부주의한 레지스트리 편집은 돌이킬 수 없는 위험을 일으킬 수 있어 레지스트리를 편집하기에 앞서 먼저 백업을 권장한다. 윈도우 3.x에서 등록 정보 편집기(Registration Info Editor)를 선보였는데, 이는 단순히 응용 프로그램의 데이터베이스로서 문서 안의 OLE 객체를 편집하는 용도로 현재까지 사용되고 있다. 윈도우 NT는 레지스트리 편집에 대한 허가를 도입했다. 윈도우 9x 운영체제는 윈도우와 MS-DOS 리얼 모드에서 사용할 수 있는 REGEDIT.EXE를 포함하고 있고, 윈도우 NT 4.0과 윈도우 2000은 윈도우 9x REGEDIT.EXE 프로그램과 윈도우 NT 3.x의 REGEDT32.EXE 프로그램을 둘 다 가지고 있다. 두 편집 프로그램의 차이는 다음과 같다.

REGEDIT.EXE와 REGEDT32.EXE의 비교
REGEDIT.EXE REGEDT32.EXE
'내 컴퓨터'로 시작하는 왼쪽에 트리 보기를 가지고 있으며
모든 하이브를 나열한다.
왼쪽에 트리 보기가 있지만 각 하이브는 저마다 창을 가지고 있기 때문에
트리는 오직 키만을 보여준다.
값의 세 가지 구성 요소(이름, 형, 데이터)를 각 표의 열로 보여준다. 값의 세 가지 구성 요소들을 문자열 목록으로 보여준다.
트리 보기에서 마우스 오른쪽 클릭을 지원하여
속성과 다른 설정을 수정할 수 있다.
맨 위의 메뉴 표시줄을 통해서만 모든 동작을 수행할 수 있다.
키 이름, 값, 데이터를 모든 레지스트리를 통해 검색할 수 있다. 한 번에 한 하이브 안에서 키 이름을 검색할 수 있다.
허가 권한 편집을 지원하지 않는다. NT 레지스트리의 완전한 기능에 접근하는 유일한 방법이다.
문자열(REG_SZE)와 이진(REG_BINARY),
DWORD(REG_DWORD) 값만을 지원한다.
문자열, 이진, DWORD 뿐 아니라
확장 가능 문자열(REG_EXPAND_SZ)와
다중 문자열(REG_MULTI_SZE)도 지원한다.

윈도우 XP는 두 개의 프로그램을 하나로 통합한 첫 운영체제였으며, 이전의 REGEDIT.EXE 인터페이스를 가지고 REGEDT32.EXE의 기능을 추가하였다. 윈도우 XP 이후의 운영 체제에서 REGEDIT.EXE가 개선되어, REGEDT32.EXE는 단순히 REGEDIT.EXE를 불러오는 단순한 기능을 수행하면서 앞서 말한 차이점들은 적용되지 않게 되었다. 이 레지스트리 편집기는 사용자에게 다음의 기능을 수행할 수 있게 도와준다.

  • 레지스트리 키, 서브키, 값, 값 데이터를 만들고, 제어하고, 이름을 바꾸고, 삭제할 수 있다.
  • REG 파일들을 가져오고 내보낸다. 이진 하이브 포맷으로 자료를 내보낸다.
  • 윈도우 NT 기반의 운영체제에서만 레지스트리 하이브 포맷 파일을 불러오고, 제어하고, 업로드가 가능하다.
  • 윈도우 NT 기반의 운영체제에서만 ACL 기반의 허가를 설정한다.
  • 사용자가 지정한 레지스트리 값을 즐겨찾기로 등록한다.
  • 키 이름, 값 이름, 값 데이터에서 특정한 문자열을 찾는다.
  • 다른 네트워크 컴퓨터의 레지스트리를 원격으로 편집한다.

.REG 파일[편집]

레지스트리 항목이라 불리는 .REG 파일은 문자열 기반으로 사람이 이해할 수 있는 파일로 레지스트리의 일부가 저장되어 있다. 윈도우 2000 이후의 NT 기반 운영 체제에는 처음 시작 내용에 유니코드를 기반으로 한 WIndows Registry Editor Version 5.00을 포함하고 있고 윈도우 9x / NT 4.0 운영 체제에는 'REGEDIT4'라는 문자열을 포함하며 ANSI를 기반으로 하고 있다. 윈도우 9x 포맷의 .REG 파일은 윈도우 2000 및 후반 NT 기반 운영 체제와 호환되어 이 세 운영 체제의 윈도우 레지스트리 편집기는 윈도우 9x / NT 형태의 .REG 파일을 내보내는 기능을 제공한다. .REG 파일에 저장되는 데이터는 다음의 구문을 사용해 저장된다.

[<하이브 이름>\<키 이름>\<서브키 이름>]
"값 이름"=<값 형태>:<값 데이터>

.REG 파일의 데이터는 이러한 파일을 두 번 누르거나 명령 프롬프트에서 /s 스위치를 사용하여 레지스트리를 추가하거나 병합할 수 있다. .REG 파일은 레지스트리 데이터를 제거하는데 사용할 수도 있다. 키(모든 서브키, 값, 데이터)를 제거하려면 .REG 파일은 하이브 이름 앞에 빼기 표시(-)를 넣어주어야 하고, 키와 그 데이터를 제거하려면 제거할 값의 등호 뒤에 빼기 표시(-)를 넣어주어야 한다.

명령 줄 편집[편집]

레지스트리는 명령 줄에서 수많은 방법으로 제어할 수 있다. reg.exe 유틸리티 도구는 윈도우 XP와 윈도우 비스타에 포함되어 있다.

reg.exe Operation [매개변수 목록]
Operation [QUERY|ADD|DELETE|COPY|SAVE|LOAD|UNLOAD|RESTORE|COMPARE|EXPORT|IMPORT]

.REG 파일은 다음과 같은 명령어로 가져올 수 있다.

regedit.exe /s 파일 이름

/s는 레지스트리에 조용하게 병합한다는 것을 뜻한다. 이 변수가 빠지면 레지스트리 병합 작업을 수행할 것인지 사용자에게 확인을 요청한다. /s 스위치를 사용하면 Regedit는 작업을 실패할 때 reg.exe가 하는 바와 달리 적절한 반환 코드를 반환하지 않아 실패 여부를 알려주지 않는다. 그러나 다음과 같은 줄을 배치 파일에 추가해 실패 여부를 확인할 수 있다.

regedit /s file.reg
regedit /e test.reg "key"
if not exist test.reg goto REGERROR
del test.reg

윈도우 98을 시작으로 마이크로소프트 윈도우의 수많은 버전에서 .REG 파일의 기본 연결을 사용자에게 병합 확인을 요구하지 않는다. 다른 명령 줄 옵션은 CScript, WHI WMIC.exe, 윈도우 파워셸과 더불어 VBSript, JScript를 함께 포함하고 있다. 레지스트리 허가는 SubInACL.exe 도구를 이용해 제어할 수 있다. 입력 방법은 다음과 같다.

HKEY_LOCAL_MACHINE\SOFTWARE 레지스트리 허가
입력 방식 비고
subinacl /keyreg HKEY_LOCAL_MACHINE\SOFTWARE /display 허가 요청
subinacl /keyreg HKEY_LOCAL_MACHINE\SOFTWARE /setowner=Administrator HKEY_LOCAL_MACHINE\SOFTWARE 키에 해당하는
모든 서브키의 소유자를 관리자로 설정
subinacl /subkeyreg HKEY_LOCAL_MACHINE\SOFTWARE /setowner=Administrator
subinacl /keyreg HKEY_LOCAL_MACHINE\SOFTWARE /grant=Administrator=F HKEY_LOCAL_MACHINE\SOFTWARE 키를
안전하게 관리자 권한으로 제공

프로그램 또는 스크립트[편집]

레지스트리는 고급 윈도우 32 기반 API 라이브러리(advapi32.dll)의 API를 통해 편집할 수 있다.

레지스트리 API 명령어의 종류
RegCloseKey RegOpenKey RegConnectRegistry RegOpenKeyEx
RegCreateKey RegQueryInfoKey RegCreateKeyEx RegQueryMultipleValues
RegDeleteKey RegQueryValue RegDeleteValue RegQueryValueEx
RegEnumKey RegReplaceKey RegEnumKeyEx RegRestoreKey
RegEnumValue RegSaveKey RegFlushKey RegSetKeySecurity
RegGetKeySecurity RegSetValue RegLoadKey RegSetValueEx
RegNotifyChangeKeyValue RegUnLoadKey

수많은 프로그래밍 언어는 자체 런타임 라이브러리 기능이나 클래스를 제공하여 프로그램들이 레지스트리의 설정을 저장할 수 있게 도와준다. COM을 사용하는 응용 프로그램들은 WSH WScript.Shell 오브젝트를 사용할 수 있으며 달리 윈도우 리소스 킷 도구, Reg.exe를 사용해 코드로부터 실행 파일을 실행할 수도 있다. 이와 비슷하게 , 윈도우 파워셸, 윈도우 스크립트 호스트와 같은 스크립트 언어스크립트로부터 레지스트리를 편집할 수 있게 만든다.

위치[편집]

레지스트리는 윈도우의 버전에 따라 여러 개의 파일에 저장되고 이러한 파일들은 모두 로컬 컴퓨터에 존재한다. 사용자가 특화된 HKEY_CURRENT_USER 사용자 레지스트리 하이브는 Ntuser.dat에 저장되며, 사용자가 로밍 파일을 가지고 있으면 로그아웃할 때 서버에 복사하고 로그인할 때 서버로부터 복사를 받는다.

윈도우 NT[편집]

레지스트리를 이진 파일의 하이브 형식으로 저장한다. 윈도우 NT 기반 운영체제들이 내보내고 불러오는 등의 작업을 할 수 있도록 구성되어 있다. %SystmeRoot%\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 하이브에 연결되어 있지 않다. 운영 체제를 업그레이드할 때에만 이용한다.

개별 사용자 프로파일 폴더에 저장되는 레지스트리 파일은 다음과 같다.

%UserProfile%\Ntuser.dat HKEY_USERS\<사용자 SID>
%UserProfile%\Local Settings\Application Data\
Microsoft\Windows\Userclass.dat
HKEY_USER\<User SID>_Classes
HKEY_CURRENT_USER\Software\Classes
(경로는 운영체제의 언어에 따라 지역화 되어있다.)

윈도우 95, 98, Me[편집]

레지스트리 파일은 USER.DATSYSTEM.DAT이라는 이름을 가지면 %WINDIR% 디렉터리에 저장된다. 윈도우 Me에서는 Classes.det이 추가되었다. 또한 각 사용자 프로파일은 프로파일을 사용할 경우 저마다 프로파일 디렉터리 안에 USER.DAT을 가지고 있다.

윈도우 3.11[편집]

윈도우 3.11을 개발하는 동안 *.ini 파일을 제거해야 하는 필요성이 제기되어 새로운 파일 형식이 프로그래밍 환경에 도입되었고 이를 Reg.dat이라 한다. 이 파일은 C:\WINDOWS 디렉터리에 저장되고 윈도우 95 레지스트리의 선구자 역할을 한다.

백업 및 복구[편집]

윈도우는 여러 개의 방식을 지원하여 레지스트리를 백업하고 복원한다.

  • 윈도우 NT 기반의 운영 체제는 자동으로 각 하이브의 백업본을 %Windir%\System32\config 폴더에 만든다. 어떤 파일이든 복구 콘솔을 통해 복원할 수 있다.
  • 시스템 복원은 윈도우가 시동할 수 있을 경우 또는 윈도우 비스타 시작 시 윈도우 복구 환경으로부터 레지스트리를 백업하고 복원할 수 있다.
  • NT백업은 레지스트리를 시스템 상태의 일부로 백업하고 복원할 수 있다.
  • 윈도우 98 / Me는 레지스트리 검사 도구를 사용하여 레지스트리를 검사하고 수정할 수 있다. 명령 프롬프트는 Scanreg.exe 파일을, 그래픽 사용자 인터페이스는 Scanregw.exe 파일을 이용하면 된다. 5개의 자동 정규 백업본을 기본으로 만들 수 있으며 손상이 일어나면 수동으로 복원을 할 수 있다. 레지스트리 검사 도구는 레지스트리를 기본적으로 %Windir%\Sysbckup에 백업하고 scanreg.exe는 MS-DOS에서도 실행할 수 있다.
  • 윈도우 95 CD-ROM은 긴급 복구 유틸리티 <code<ERU.exe</code>와 구성 백업 도구 Cfgback.exe를 포함하고 있어 이를 통해 레지스트리를 백업하고 복원할 수 있게 도와준다.[2]

각주[편집]

  1. Registry 레지스트리〉, 《정보통신기술용어해설》
  2. 윈도우 레지스트리〉, 《위키백과》

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 레지스트리 (컴퓨터) 문서는 소프트웨어에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.