http://ko.wikipedia.org/wiki/윈도_레지스트리
http://net2free.tistory.com/20
레지스트리는 Windows 시스템 전반의 다양한 정보를 집중적으로 관리하는 데이타베이스이다. 레지스트리에는 Windows의 시스템이나 어플리케이션 등에 관한 설정 정보도 포함되어 있어 레지스트리를 바꾸면 각종 설정도 변경되게 된다.
무엇보다 레지스트리를 직접 고쳐 쓰는 일 없이 설정을 변경하는 방법은 얼마든지 있다. 원래 제어판이나 관리 도구, 혹은 어플리케이션 설정 메뉴에서 설정을 변경하는 것이 Windows의 기본이다. 그러나, 예를 들어 여러 PC에 동일한 설정을 반영하는 경우에 하나 하나 GUI로 대화적 제어를 하는 것은 매우 많은 시간이 드는 것도 사실이다. 이럴 때 Active Directory에서 그룹 정책을 활용하는 것도 한 벙법이다. 도메인 혹은 조직 단위로 그룹 정책을 작성해 할당하면, 그 소속의 모든 PC가 자동적으로 공통의 설정을 적용할 수 있다. 그러나, 작업 그룹 구성의 컴퓨터나 그룹 정책 비대응의 어플리케이션이 대상이라면 이 방법은 거의 이용할 수 없다.
이런 상황에서는 레지스트리를 직접 쓰는 방법에 의한 설정 변경이 유용한 수단이라고 할 수 있을 것이다. 그 한가지 방법으로서 .reg 파일을 작성해서 레지스트리에 읽어들이는 방법이 있다. .reg 파일은 레지스트리에서 불러올수 있는 형식의 텍스트 파일의 일종으로 Windows의 메모장으로 작성할 수 있다. 단일 .reg 파일에 여러개의 레지스트리 제어를 정리할수 있을 뿐만 아니라 Windows 탐색기 등에서 .reg 파일을 더블클릭 하는 것만으로 레지스트리에 그 내용을 불러올수 있는 장점이 있다. 특히, 동일한 설정을 여러 컴퓨터에 적용하는 경우에 유용하다. 한편, 컴퓨터/사용자 마다 설정 내용을 바꾸고 싶은 경우는 각각 대응하는 .reg 파일을 준비해야 하기 때문에 오히려 순서가 더 복잡해지는 점에 주의할 필요가 있다.
제어 방법
.reg 파일의 기술을 잘못하면 레지스트리에 심각한 손상을 줄 위험성이 있다. 대규모로 .reg 파일을 사용하기 전에 테스트를 꼼꼼하게 실시하는 것은 물론, 테스트 환경에서도 .reg 파일에 의해 변경 되는 곳을 복원할 수 있도록 미리 레지스트리를 백업 해 두는 것을 추천한다.
.reg 파일은 메모장에서 작성/편집이 가능
.reg 파일을 작성하려면 Windows의 메모장과 같은 Unicode(UTF-16)에 대응하는 텍스트 에디터를 이용해야 한다. 상당히 큰 .reg 파일이 아닌 이상 메모장으로 충분할 것이다. 다만, .reg 파일을 저장할 때 확장자와 문자 인코딩에 주의할 필요가 있다. 메모장의 경우, [파일] - [다른 이름으로 저장]을 실행해서 확장자가 [.reg], 문자 인코딩은 [Unicode]로 각각 변경하고 나서 저장한다. 다른 텍스트 에디터에서도 이와 같이 해야 한다.
.reg 파일의 기본 구성
.reg 파일의 기본 구성은 아래와 같이 앞부분에 레지스트리 에디터의 버전 지정과 변경 대상 하위키/값의 설정부터 시작한다. 이 설정은 여러개 지정이 가능하고, 각각 빈줄로 단락지어 기술한다. 레지스트리에 읽어들일 때는 위에서부터 차례로 설정이 처리된다.
Windows Registry Editor Version 5.00 - 레지스트리 에디터의 버전을 지정하는 행.
- 빈줄
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\Site1] - 변경 대상의 하위키. 반드시 전체 경로로 기술한다. 그리고 전체는 "[ ]"으로 묶는다.
"SiteName"="TestSite" - 변경 대상의 값. [=]의 좌측은 값의 이름, 우측은 값의 내용
- 빈줄
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\user1] - 다음 변경 대상의 하위키
(이하 생략)
하위키를 추가하는 방법
레지스트리에 새로운 하위키를 추가하려면 단순히 그 전체 경로를 기술하는 것만으로 된다. 각 하위키의 단락은 [\] 문자로, 전체 경로는 "[ ]"로 묶는 것은 앞의 내용과 같다.
Windows Registry Editor Version 5.00
- 빈줄
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\Site1] - 추가하는 하위키
- 빈줄
중간에 있는 계층의 하위키(위에서는 MyCampany, MyApp 등)는 없어도 자동적으로 작성된다. 그 때문에 중간에 하위키를 추가하기 위한 행은 불필요하고, 대상이 되는 하위키의 전체 경로를 1행만 기술하면 된다. 또, 이미 있는 하위키를 추가 대상으로 해도 레지스트리에 읽어들일 때에 에러가 발생하지 않는다. 단지 무시할뿐이므로, 특별히 대처할 필요는 없다. 하위키와 동시에 값도 추가하고 싶다면 하위키 지정행 바로 아래에 값을 추가하는 행을 기술한다.
값을 추가/수정하는 방법
값의 추가 또는 값 내용을 수정할려면 대상 하위키를 지정한 행 바로 아래에 값의 추가/수정을 위한 행을 기술한다. 레지스트리에 .reg 파일을 읽어들일 때 대상이 되는 하위키가 존재하지 않으면 그 하위키가 새롭게 작성된 후 지정한 값도 추가된다.
새롭게 값을 추가하는 순서와 기존 값의 내용을 수정하는 순서는 바뀌지 않는다. 대상이 되는 값이 없으면 [추가], 있으면 [수정]으로 다루어진다.
Windows Registry Editor Version 5.00
- 빈줄
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\Site1] - 대상이 되는 하위키를 지정
@="DefaultSite" - 하위키 Site1의 기본값을 지정
"SiteType"="SharePoint" - 값 SiteType에 문자열 "SharePoint"를 지정
"SiteNo"=dword:00000001 - 값 SiteNo에 숫자 0x00000001를 지정.
"SiteDir"="D:\\InetRoot\\WWWRoot\\" -값 SiteDir에 문자열 "D:\\InetRoot\\WWWRoot\\"를 지정
- 빈줄
특히, 값의 내용으로 폴더 경로등에 [\]을 포함한 문자열을 설정하는 경우에는 [\\] 으로 변환해서 기술할 필요가 있다. [\]만 입력하면 그 값이 정상적으로 레지스트리에 추가되지 않는다. 그리고 .reg 파일에서는 값의 내용 일부만 수정하지는 못하므로 값의 내용 전체를 지정할 필요가 있다. 예를 들어 위에서 값 [SiteDir]의 내용 중에서 [WWW] 를 [FTP]로 변경하고 싶은 경우에는 전체, 즉 ["D:\\InetRoot\\FTPRoot\\"]라고 지정해야 한다.
값의 형에 대해
레지스트리 값에는 미리 정해져 있는 몇개의 형이 있다. 문자열값 이외의 형에 대해서는 .reg 파일에 명시적으로 지정하지 않으면 안된다. 대표적인 형은 아래 표와 같다.
명칭 |
형의 종류 |
.reg 파일 서식 |
설명 |
문자열값 |
REG_SZ |
"<값이름>"="<문자열>" |
1행의 문자열. 값의 형은 지정할 필요 없음 |
DWORD값 |
REG_DWORD |
"<값이름>"=dword:<8자리 16진수> |
32bit 값. [0(0x00000000)]에서 [4294967295(0xffffffff)]까지의 값를 지정 가능. |
바이너리값 |
REG_BINARY |
"<값이름>"=hex:<2자리 16진수>,<2자리 16진수>,……,\
<2자리 16진수>,……, <2자리 16진수> |
바이너리 데이터. 1byte씩 콤마로 구분. 행 끝에는 [,\]를 적는다. |
복수행문자열값 |
REG_MULTI_SZ |
"<값이름>"=hex(7):<2자리 16진수>,<2자리 16진수>,……,\
<2자리 16진수>,……, <2자리 16진수> |
여러행에 걸쳐 기술하는 문자열. 문자 코드를 1byte씩 콤마로 구분해서 기술. 행 끝에는 [,\]를 적는다. |
전개 가능한 문자열값 |
REG_EXPAND_SZ |
"<값이름>"=hex(2):<2자리 16진수>,<2자리 16진수>,……,\
<2자리 16진수>,……, <2자리 16진수> |
환경 변수나 식이 삽입된 문자열. 문자 코드를 1byte씩 콤마로 구분해서 기술. 행 끝에는 [,\]를 적는다. |
대표적인 레지스트리 값의 형과 서식
이 중에서 복수행문자열값(REG_MULTI_SZ)과 전개 가능한 문자열값(REG_EXPAND_SZ)은 그 문자 코드를 1byte씩 16진수로 기술하지 않으면 안되기 때문에 몹시 귀찮다.
하위키를 삭제하는 방법
하위키를 삭제하려면 아래와 같이 하위키의 전체 경로의 앞에 하이픈 [-] 을 삽입한다.
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\Site1]
이것으로 하위키 [Site1]은 물론 [Site1]에 포함된 값 및 [Site1] 이하의 계층에 있는 하위키도 모두 삭제된다.
값을 삭제하는 방법
값을 삭제하려면 내용 부분 즉, [=]의 우측에 하이픈만 기술한다. 하이픈을 이중 인용부호로 묶지 않도록 주의할 것
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\Site1]
"Setting1"=-
이것으로 하위키 [Site1]의 값 [Setting1]이 삭제된다.
하위키의 이름은 직접 변경할 수 없다
.reg 파일에서는 직접 하위키의 이름을 변경하지 못하고, 일단 대상이 되는 하위키를 삭제하고 새로운 이름으로 재작성할 필요가 있다. 그렇기 때문에 원래 하위키의 값과 아래 계층의 하위키를 새로운 하위키로 다시 설정하기 위한 기술이 필요하다.
Windows Registry Editor Version 5.00
- 빈줄
[-HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config] - 원래 하위키 [Config] 이하의 모든것을 삭제
- 빈줄
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Conf] - 새로운 하위키 [Conf]를 추가
"Type"="default" - 원래 [Config]에 저장되어 있던 값을 복원
- 빈줄
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Conf\site1] - 원래 [Config] 이하에 있던 하위키 [Site1]을 복원
"Setting1"=dword:1234abcd - 원래 [Config\Site1]에 저장되어 있던 값을 복원
이것으로 하위키 [Config]의 이름이 [Conf]로 변경된다.
값의 이름도 직접 변경할 수 없다
하위키와 같이 값의 이름(값이름)도 또한 .reg 파일에서는 직접 변경하지 못하고, 일단 삭제해서 새로운 이름으로 다시 만들 필요가 있다.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Conf\site1] - 대상이 되는 하위키 지정
"Setting1"=- - 값 [Setting1]을 삭제
"Setting2"=dword:1234abcd - 값 [Setting2]에 원래 값인 [Setting1]의 내용을 복원
이것으로 값 [Setting1]의 이름이 [Setting2]로 변경된다.
.reg 파일을 레지스트리에 읽어들이는 방법
위와 같이 작성한 .reg 파일을 실제로 컴퓨터에 읽어들이는 몇가지 방법이 있다. 가장 간단한 방법은 Windows 탐색기 등에서 .reg 파일을 더블클릭하는 방법이다. 디폴트로 .reg 파일은 실행되면 그 내용이 레지스트리에 읽혀진다.
예를 들어 .reg 파일을 파일 서버의 네트워크 공유 폴더에 저장하고, 그것을 엔드 유저에게 의뢰해 클라이언트 PC에서 Windows 탐색기에서 실행하게 한다. 이것으로 .reg 파일의 내용이 레지스트리에 읽혀진다. 다만, 엔드 유저가 관리자 권한을 가지고 있지 않다면 HKEY_LOCAL_MACHINE 이하와 같은 관리자만이 쓸수 있는 권한이 있는 하위키는 변경할 수 없다.
reg import 명령어를 이용하면 원격으로 .reg 파일을 읽어들일수도 있다.
reg import <.reg 파일명>
이 명령어를 로컬 시스템 계정이나 관리자 계정으로 실행하면 관리자 권한의 하위키도 변경할 수 있다.
Windows 2000에서 reg 명령어를 사용하지 못한다면, 레지스트리 에디터(regedit.exe)를 이용할 수도 있다.
regedit /s <.reg 파일명>