"레지스트리 (컴퓨터)"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
(새 문서: '''레지스트리'''(registry)란 마이크로소프트 윈도우에서 개발하였으며 운영체제 내에서 작동하는 모든 프로그램의 시스템 정보를 담고 있...)
 
(위치)
181번째 줄: 181번째 줄:
  
 
== 위치 ==
 
== 위치 ==
 +
레지스트리는 윈도우의 버전에 따라 여러 개의 파일에 저장되고 이러한 파일들은 모두 로컬 컴퓨터에 존재한다. 사용자가 특화된 <code>HKEY_CURRENT_USER</code> 사용자 레지스트리 하이브는 <code>Ntuser.dat</code>에 저장되며, 사용자가 로밍 파일을 가지고 있으면 이 파일으 로그아웃할 때 서버에 복사하고 로그인할 때 서버로부터 복사를 받는다.
 
=== 윈도우 NT 기반의 운영체제 ===
 
=== 윈도우 NT 기반의 운영체제 ===
 +
레지스트리를 이진 파일의 하이브 형식으로 저장한다. 윈도우 NT 기반 운영체제들이 내보내고 불러오는 등의 작업을 할 수 있도록 구성되어있다.
 +
<code>%SystmeRoot%\System32\Config\</code>에 저장되는 레지스트리 파일은 다음과 같다.
 +
:{|class=wikitable width=900
 +
!align=center|Sam
 +
|align=center|HKEY_LOCAL_MACHINE\SAM
 +
|-
 +
!align=center|Security
 +
|align=center|HKEY_LOCAL_MACHINE\SECURITY
 +
|-
 +
!align=center|Software
 +
|align=center|HKEY_LOCAL_MACHINE\SOFTWARE
 +
|-
 +
!align=center|System
 +
|align=center|HKEY_LOCAL_MACHINE\SYSTEM
 +
|-
 +
!align=center|Default
 +
|align=center|HKEY_USERS\.DEFAULT
 +
|-
 +
!align=center|Userdiff
 +
|align=center|하이브에 연결되어 있지 않다. 운영 체제를 업그레이드할 때에만 이용한다.
 +
|}
 +
 +
개별 사용자 프로파일 폴더에 저장되는 레지스트리 파일은 다음과 같다.
 +
:{|class=wikitable width=900
 +
!align=center|%UserProfile%\Ntuser.dat
 +
|align=center|HKEY_USERS\<사용자 SID>
 +
|-
 +
!align=center rowspan="2"|%UserProfile%\Local Settings\Application Data\<br>Microsoft\Windows\Userclass.dat
 +
|align=center|HKEY_USER\<User SID>_Classes
 +
|-
 +
|align=center|HKEY_CURRENT_USER\Software\Classes<br>(경로는 운영체제의 언어에 따라 지역화 되어있다.)
 +
|}
 +
 
=== 윈도우 95, 98, Me ===
 
=== 윈도우 95, 98, Me ===
 +
레지스트리 파일은 <code>USER.DAT</code>와 <code>SYSTEM.DAT</code>이라는 이름을 가지면 <code>%WINDIR%</code> 디렉터리에 저장된다. 윈도우 Me에서는 <code>Classes.det</code>이 추가되었다. 또한 각 사용자 프로파일은 프로파일을 사용할 경우 저마다 프로파일 디렉터리 안에 USER.DAT을 가지고 있다.
 +
 
=== 윈도우 3.11 ===
 
=== 윈도우 3.11 ===
 +
윈도우 3.11을 개발하는 동안 <code>*.ini 파일</code>을 제거해야하는 필요성이 제기되어 새로운 파일 형식이 프로그래밍 환경에 도입되었고 이를 <code>Reg.dat</code>이라 한다. 이 파일은 <code>C:\WINDOWS</code> 디렉토리에 저장되고 윈도우 95 레지스트리의 선구자 역할을 한다.
  
 
== 백업 및 복구 ==
 
== 백업 및 복구 ==

2019년 9월 19일 (목) 13:22 판

레지스트리(registry)란 마이크로소프트 윈도우에서 개발하였으며 운영체제 내에서 작동하는 모든 프로그램의 시스템 정보를 담고 있는 데이터베이스이다. 등기소, 등록소라는 뜻을 가지고 있다.

개요

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

특징

구조

키, 값

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

  • 레지스트리 키 : 폴더와 비슷하다. 각 키는 수많은 서브키를 포함할 수 있는 서브키를 가질 수 있고, 계급 수준을 지시하기 위해 백슬래시를 사용하면서 Windows라는 경로 이름과 비슷한 구문으로 가리킨다.
  • 레지스트리 값 : 키 안에 들어 있는 이름/자료이다. 값은 여러 키로부터 따로 참조할 수 있다. 이름에 백슬래시를 포함할 수 있으나 키 경로와의 구별이 어려울 수 있다. 레지스트리 값을 찾아서 이용하는 윈도우 AIP 명령어는 부모 키를 정의하는 핸들과 값 이름을 경로로부터 별도로 가져온다. 수많은 다른 종류의 값이 있다.
레지스트리의 값 종류
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) 파일 연결, OLE 객체 클래스 ID와 같은 등록된 응용 프로그램의 정보를 담고 있다.
HKEY_CURRENT_USER (HKCU) 현재 로그인한 사용자의 설정을 담고 있다.
HKEY_LOCAL_MACHINE (HKLM) 컴퓨터의 모든 사용자의 설정을 담고 있다.
HKEY_USERS
(HKU)
컴퓨터에서 사용 중인 각 사용자 프로파일에 대한 HKEY_CURRENT_USER 키에 일치하는 서브키를 담고 있다.
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 파일은 제거할 값의 등호 뒤에 빼기 표시(-)를 넣어주어야 한다.

명령 줄 편집

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

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

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

regedit.exe /s 파일 이름

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

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

윈도우 98을 시작으로 마이크로소프트 윈도우의 수많은 버전에서 .REG 파일의 기본 연결을 사용자에게 병합 확인을 요구하지 않는다.

프로그램 또는 스크립트

레지스트리는 고급 윈도우 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은 긴급 복구 유틸리티(ERU.exe)와 구성 백업 도구(Cfgback.exe)를 포함하고 있어 이를 통해 레지스트리를 백업하고 복원할 수 있게 도와준다.[2]

각주

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

참고자료