기술 자료 ID : 310516
마지막 검토 : 2007년 12월 3일 월요일
수정 : 4.1
이 문서는 이전에 다음 ID로 출판되었음: KR310516

요약

경고: 레지스트리 편집기를 잘못 사용하면 심각한 문제가 발생할 수 있으며 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 레지스트리 편집기를 잘못 사용함으로써 발생하는 문제에 대해 해결을 보증하지 않습니다. 레지스트리 편집기 사용에 따른 모든 책임은 사용자에게 있습니다.
이 문서에서는 등록 항목(.reg) 파일을 사용하여 레지스트리 하위 키와 값을 추가, 변경 또는 삭제하는 방법을 단계별로 설명합니다. Regedit.exe는 .reg 파일을 사용하여 레지스트리 하위 키와 값을 가져오거나 내보냅니다. .reg 파일을 사용하면 레지스트리 변경 내용을 원격에서 다수의 Windows 기반 컴퓨터에 배포할 수 있습니다. .reg 파일을 실행하면 해당 파일 내용이 로컬 레지스트리로 병합됩니다. 따라서 .reg 파일을 배포할 때는 주의해야 합니다.

위로 가기

.reg 파일의 구문

.reg 파일의 구문은 다음과 같습니다.

RegistryEditorVersion
Blank line
[RegistryPath1]
"DataItemName1"="DataType1:DataValue1"
DataItemName2"="DataType2:DataValue2"
Blank line
[RegistryPath2]
"DataItemName3"="DataType3:DataValue3"

여기에서

RegistryEditorVersion은 Windows 2000, Windows XP 및 Windows Server 2003용 "Windows 레지스트리 편집기 버전 5.00"이거나 Windows 98 및 Windows NT 4.0용 "REGEDIT4"입니다. "REGEDIT4" 헤더는 Windows 2000, Windows XP 및 Windows Server 2003 기반의 컴퓨터에서도 작동합니다.

Blank line은 빈 줄을 의미하며 새 레지스트리 경로의 시작 부분을 나타냅니다. 각 키 또는 하위 키는 새로운 레지스트리 경로입니다. .reg 파일에 키가 여러 개 있다면 blank line을 통해 내용을 검사하여 문제를 해결할 수 있습니다.

RegistryPathx는 가져오려는 첫 번째 값을 보유하고 있는 하위 키의 경로입니다. 경로는 대괄호로 묶어야 하며 각 계층은 백슬래시로 구분해야 합니다. 예를 들면 다음과 같습니다.
[HKEY_LOCAL_ MACHINE\SOFTWARE\Policies\Microsoft\Windows\System]
.reg 파일에는 여러 레지스트리 경로가 포함될 수 있습니다. 레지스트리에 경로 문장의 최하위 계층이 없으면 새로운 하위 키가 만들어집니다. 레지스트리 파일의 내용은 사용자가 입력하는 순서대로 레지스트리로 보내집니다. 따라서 다른 하위 키가 아래에 있는 새 하위 키를 생성하는 경우 줄을 정확한 순서대로 입력해야 합니다.

DataItemNamex는 가져올 데이터 항목의 이름입니다. 파일의 데이터 항목이 레지스트리에 없으면 .reg 파일에서 데이터 항목과 해당 항목 값을 추가합니다. 데이터 항목이 존재하면 .reg 파일의 값이 기존 값을 덮어씁니다. 데이터 항목의 이름은 인용 부호로 표시됩니다. 데이터 항목 이름 바로 다음에는 등호(=)가 옵니다.

DataTypex는 레지스트리 값의 데이터 형식이며 바로 다음에 등호가 붙습니다. REG_SZ(문자열 값)가 아닌 모든 데이터 형식 바로 다음에는 콜론이 붙습니다. 데이터 형식이 REG_SZ인 경우 데이터 형식 값이나 콜론을 집어넣지 않습니다. 이 경우 Regedit.exe는 데이터 형식을 REG_SZ로 간주합니다. 다음 표에서는 일반적인 레지스트리 데이터 형식을 보여 줍니다.
데이터 형식 .reg의 DataType
REG_BINARY 16진수
REG_DWORD dword
REG_EXPAND_SZ 16진수(2)
REG_MULTI_SZ 16진수(7)
레지스트리 데이터 형식에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
256986 (http://support.microsoft.com/kb/256986/) Microsoft Windows 레지스트리 설명
DataValuex는 콜론(REG_SZ의 경우 등호) 바로 다음에 오며 올바른 형식(예: 문자열 또는 16진수)을 사용해야 합니다. 이진 데이터 항목에는 16진수 형식을 사용합니다.

참고 동일한 레지스트리 경로에 여러 데이터 항목 줄을 입력할 수 있습니다.



위로 가기

레지스트리 하위 키 추가 또는 레지스트리 값 추가 및 변경

레지스트리 하위 키를 추가하거나 레지스트리 값을 추가 또는 변경하려면 레지스트리에서 적절하게 수정한 다음 적절한 하위 키를 내보내야 합니다. 내보낸 레지스트리 하위 키는 자동으로 .reg 파일로 저장됩니다. 레지스트리를 변경하고 변경 내용을 .reg 파일에 내보내려면 다음 단계를 수행하십시오.
1. 시작, 실행을 차례로 누르고 열기 상자에 regedit를 입력한 다음 확인을 누릅니다.
2. 변경하려는 레지스트리 항목을 보유하고 있는 하위 키를 찾아서 누릅니다.
3. 파일을 누른 다음 내보내기를 누릅니다.

이렇게 함으로써 하위 키를 변경 전에 백업할 수 있습니다. 변경한 후 문제가 발생하면 나중에 이 파일을 레지스트리로 다시 가져올 수 있습니다.
4. In the 파일 이름 상자에 원본 레지스트리 항목으로 .reg 파일을 저장할 파일 이름을 입력한 다음 저장을 누릅니다.

참고 하위 키 이름을 나타내는 것처럼 내용을 기억하는 데 도움이 되는 이름을 사용하십시오.
5. 오른쪽 창에서 원하는 레지스트리 항목을 추가 또는 수정합니다.
6. 하위 키를 다시 내보내려면 3-4단계를 반복하되 다른 .reg 파일 이름을 사용하십시오. 레지스트리 변경 내용을 다른 컴퓨터에 적용하기 위해 이 .reg 파일을 사용할 수 있습니다.
7. 로컬 시스템에서 변경 내용을 테스트합니다. 변경 내용으로 인해 문제가 발생하면 원래의 레지스트리 데이터에 대한 백업을 보유하는 파일을 두 번 눌러 레지스트리를 원래 상태로 되돌립니다. 변경 내용이 예상대로 작동한다면 본 문서의 "레지스트리 변경 내용 배포" 절에서 설명하는 방법을 통해 6단계에서 만든 .reg 파일을 다른 컴퓨터에 배포할 수 있습니다.

위로 가기

레지스트리 키 및 값 삭제

.reg 파일로 레지스트리 키를 삭제하려면 .reg 파일의 RegistryPath 앞에 하이픈(-)을 삽입합니다. 다음 레지스트리 키를 예로 들어 보겠습니다.
HKEY_LOCAL_MACHINE\Software
위의 레지스트리 키에서 Test 하위 키를 제거하려면 .reg 파일의 다음 레지스트리 키 앞에 하이픈을 삽입합니다.
HKEY_LOCAL_MACHINE\Software\Test
다음 예제의 .reg 파일을 가지고 이 작업을 수행할 수 있습니다.
[-HKEY_LOCAL_MACHINE\Software\Test]
.reg 파일을 가지고 레지스트리 값을 제거하려면 .reg 파일의 DataItemName 바로 다음에 오는 등호 기호 다음에 하이픈(-)을 삽입합니다. 예를 들어, 다음 레지스트리 키에서 TestValue 레지스트리 값을 제거하려면:
HKEY_LOCAL_MACHINE\Software\Test
.reg 파일의 "TestValue"= 다음에 하이픈을 삽입합니다. 다음 예제의 .reg 파일을 가지고 이 작업을 수행할 수 있습니다.
HKEY_LOCAL_MACHINE\Software\Test
"TestValue"=-
.reg 파일을 만들려면 Regedit.exe를 사용하여 삭제하고자 하는 레지스트리 키를 내보낸 다음 메모장을 가지고 .reg 파일을 편집하고 하이픈을 삽입합니다.

위로 가기

레지스트리 키 및 값 이름 변경

키 또는 값의 이름을 변경하려면 키 또는 값을 삭제한 다음 새로운 이름을 가진 새로운 키 또는 값을 만듭니다.

위로 가기

레지스트리 변경 내용 배포

전자 메일을 통해 .reg 파일을 사용자에게 보내거나 .reg 파일을 네트워크 상에서 공유한 후 사용자에게 알려 해당 파일을 실행하게 하거나 사용자의 로그온 스크립트에 명령을 추가하여 로그온 시 해당 .reg 파일을 자동으로 가져가게 할 수 있습니다. 해당 .reg 파일을 실행하는 사용자는 다음과 같은 메시지를 받게 됩니다.
레지스트리 편집기
레지스트리에 .reg 파일의 경로 에 있는 정보를 추가하시겠습까?
사용자가 를 클릭하면 다음과 같은 메시지를 받게 됩니다.
레지스트리 편집기
.reg 파일의 경로에 있는 정보가 레지스트리에 성공적으로 입력되었습니다.
Regedit.exe는 /s 명령줄 스위치를 제공하여 이러한 메시지가 표시되지 않도록 합니다. 예를 들어, /s 스위치를 사용하여 로그온 스크립트 배치 파일을 통해 조용히 .reg 파일을 실행시키려면 다음 구문을 사용합니다.
regedit.exe /s .reg 파일의 경로
그룹 정책 또는 시스템 정책을 사용하여 레지스트리 변경 내용을 네트워크를 통해 배포할 수도 있습니다. 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
http://msdn.microsoft.com/library/en-us/dnw2kmag01/html/DistributingRegistryChanges.asp (http://msdn.microsoft.com/library/en-us/dnw2kmag01/html/DistributingRegistryChanges.asp)
참고 변경 내용이 작동하면 네트워크에 있는 다른 사용자에게 해당 등록 파일을 보낼 수도 있습니다.
블로그 이미지

요다할아범

,

비보호 모드로 동작하는 프로세스 실행 뜨는 보안 경고 처리하기

                                                                                         07 5 18정중희

 

 

Low Integrity로 열린 보호 모드의 익스플로러에서 외부 프로세스를 열려는 시도를 할 때 아래와 같은 경고 창이 뜨는 것을 볼 수 있다.

 

사용자 삽입 이미지

 

이는 MS가 명시하고 있는 윈도우의 Integrity Level 규칙에 어긋나는 동작임을 말해주는 경고 창이다. 보안을 위해 사용자에게 공지하고 사용여부를 묻는 방식이다.

이를 방지하기 위한 방법으로 경고 창 내 체크 박스를 이용하는 방법과, 익스플로러를 관리자 권한으로 실행하여 보호모드 오브젝트에 접근하는 방법, 그리고 레지스트리에 실행할 프로그램 명을 등록해 주는 방법 등이 있다.


 

첫째, 사용자가 직접 위 경고창 내의 이 프로그램에 대한 경고를 다시 표시 안함(S)” 에 체크를 하게 되면, 이 정책 정보가 레지스트리에 기록되어 다음 번 실행부터는 경고창을 띄우는 일이 없이 자동 허용하게 된다.

HKEY_CURRENT_USER 혹은 HKEY_LOCAL_MACHINE

SOFTWARE

Microsoft

Internet Explorer

Low Rights

ElevationPolicy

{00000000-0000-0000-0000-000000000000}

 AppName="사용할 프로세스.exe"
AppPath="
프로세스의 풀 경로"
  Policy=(DWORD) 00000003


Low Rights 권한 상승 정책 레지스트리 위치

 

이 방법은 사용자에게 자율적인 등록을 가능하게 하는 이점이 있으나, 최소한 1회 경고창을 접하게 된다는 문제가 있다. (물론 이는 MS에서 권고하는 바이나, 사용자는 불편함을 감수해야 한다.)

 

둘째, 관리자 권한으로 실행하는 방법에는 익스플로러의 아이콘에 마우스 커서를 위치 시키고 오른쪽 버튼을 누른 후 팝업 메뉴에서 관리자 권한으로 실행(Run As Administrator) 을 눌러 익스플로러를 실행 시키거나, 프로그램을 실행 하고자 하는 웹 사이트를 신뢰된 사이트로 등록시켜 주는 방법이 있다.

 

개발자적인 측면에서 보안 경고창을 막을 대안으로 위의 레지스트리 관련 작업들을 프로그램 배포시 자동으로 셋팅해 주는 방법을 생각해 볼 수 있다. 그러나 윈도우 Vista UAC(User Account Control)은 기본적으로 익스플로러를 Low Integrity Level로 실행 시키기 때문에 익스플로러 레지스트리에 접근 할 수 있는 권한 자체를 가지고 있지 않다. 대신 익스플로러는 현재 프로세스를 감지하여 설치 작업이라면 IEInstal.exe 라는 설치 대행 모니커를 불러들이고 모든 설치에 관련된 부분을 위임한다. IEInstal.exe High Integrity Level로 관리자의 권한을 가지고 시스템 폴더 및 레지스트리에 자유롭게 기록하거나 읽을 수 있는 프로세스이다.

 

사용자 삽입 이미지

IEInstal.exe 프로세스 속성

 

 

유추해 보면 프로그램 배포시 관리자 권한으로 레지스트리에 읽고 쓰기가 가능하므로 위의 방법을 프로그램 코드 내에 삽입하는 방법을 이용하면 가능한 해결책인 듯 보인다.

그러나 막상 적용하여 보면 다시 경고창이 뜨는 것을 확인 할 수 있을 것이다.

 

실제로 익스플로러는 일반 모드로 실행시 Low Integrity Level로 실행이 되며, 그와 동시에IEUser.exe라는 Midium Integrity Level 모니커 프로세스가 실행된다. IEUser.exe 는 익스플로러에 의해 캐시된 모든 인터넷 정보를 관리 / 유지 한다.

 

사용자 삽입 이미지


                                   IExplore.exe
IEUser.exe의 속성

 

그러므로 앞의 예와 같이 IEInstal.exe 모니커를 통해 레지스트리 수정이 가해지고 익스플로러를 재 시작 하게 되더라도, IEUser.exe는 캐시된 예전 정보를 가지고 있기 때문에, 강제적으로 IEUser.exe 의 프로세스를 재 시작 해야 할 필요가 있다.

 

위와 같은 레지스트리 기록 방식으로 Active-X opt-in 정책에 의해 발생되거나, 비보호 모드 프로세스의 실행 시 발생되는 경고창을 사전 차단할 수 있다.

 

Ps: Opt-in 정책에 의해 발생되는 경고창은 IEUser.exe 를 재시작 하지 않아도 가능했다.


사용자 삽입 이미지
 

Windows VISTA IE7.0 디렉토리 내부

블로그 이미지

요다할아범

,
how to make service pack 5 install on vista beta 2 without another pc!

Tutorial:

Step 1) Open C:\ServicePack5Dir\sp598ent.stf with 'Notepad.exe'

Step 2) Replace the following line

13 Group 28 36 38 29 30 32 26 27 14 25 16 17 20 18 19 15 39 21 22 24 23 43

-with-


13 Group 28 38 29 30 32 26 27 14 25 16 17 20 18 19 15 39 21 22 24 23 43

Step 3) Delete the following lines leaving only a carriage return where it was


36 Depend "27 ? : 37"
37 IsWin95 CustomAction "sp598ent.dll,CheckForMDAC"

Step 4) Save and close C:\ServicePack5Dir\sp598ent.stf
Step 5) Run setupsp5.exe
블로그 이미지

요다할아범

,
원래 기존 XP이하에서는 윈도우탐색기의 메뉴에 도구에서 폴더옵션을 선택하여
연결프로그램을 수정할 수 있도록 되어 있다.

사용자 삽입 이미지


그런데...
윈도우 비스타에서는 위의 파일형식 탭이 아예 사라져버렸다
흑흑
결국 뒤지다보니...
레지스트리 편집기에서 HKEY_CLASSES_ROOT 및에 있는 xxxfile 이라는 레지스트리 키값을 직접
수정하여 처리할 수 있다는 것을 알았다.

예를 들면, 내가  편집하고 싶은 파일의 확장자가 dsw 면 dswfile 이라는 키를 찾아 그 아래에 있는
shell 아래에 있는 내용을 편집하면 된다.

사용자 삽입 이미지



편집 방법 등등은 다음에 추가하도록 하겠다.
블로그 이미지

요다할아범

,
그런데 이 방법대로 Vista + VB6 개발 환경에서 컴파일 하고 실행해보니 에러가 발생하더군요.

사용자 삽입 이미지

이렇게 컴파일된 실행 파일은 Vista 뿐만 아니라 XP에서 실행시켜도 에러가 발생합니다.

Vista + VB6 + RC.EXE + VB 리소스 편집기 ... 뭔가 문제가 있는 듯 한데 추가적인 테스트는 시간 관계상 다음으로 미룹니다. ^^



▣ 이 글에서는 Vista + VB6 개발 환경에서 위 에러를 피할 수 있는 두 가지 방법을 설명합니다.

[1] manifest 정보를 별도 파일로 관리.
manifest 정보는 실행 파일에 리소스로 포함시키지 않더라도 다음의 명명 규칙에 따라 실행 파일과 같은 폴더에 텍스트 파일로 넣어두기만해도 적용됩니다.

실행 파일(확장자 포함)명 + ".manifest"

예를들어 실행 파일명이 vb_amdin.exe인 경우 vb_admin.exe.manifest 이름으로 저장하면 됩니다.

요즘들어 Vista와 호환되는 유틸리티가 배포되고 있는데 일부 프로그램에서는 위 방법을 이용하고 있습니다. (Ex. Total Commander 7)


[2] VB2005의 mt.exe 사용
이전 글에서 mt.exe를 이용하는 방법에 대해서도 언급했었는데, 이 방법을 이용하는 경우에는 문제가 발생하지 않았습니다.

mt -manifest app_name.exe.manifest -outputresource:app_name.exe;#1

manifest 정보를 리소스로 포함시켜서 배포하겠다면 이 방법을 이용하면 됩니다.


▷ 개발 및 테스트하는 경우, 컴파일 할 때마다 매번 mt.exe를 실행하는 것은 귀찮은 작업이 될테니 컴파일하는 폴더에 manifest 파일을 저장해두면 좀 더 수월하게 진행할 수 있을겁니다.


(간단한 예제 소스와 함께 mt.exe 실행 파일이 있습니다.)


▣ 첨부파일 설명
    ▷ 압축을 풀면 루트에 프로젝트 소스와 함께 Manifest, mt 2개의 폴더가 있습니다.
    ▷ Manifest
        - Vista에서 열어보면 방패 표시가 있는데, 이것은 같은 폴더에 있는 manifest 파일 때문입니다.
        - manifest 파일을 삭제하고 실행하면 일반 사용자 권한으로 실행됨을 확인할 수 있습니다.
    ▷ mt
        - Vista에서 열어보면 방패 표시가 있는데, 이것은 mt.exe를 이용해서 minifest 정보를 포함했기 때문입니다.
        - manifest 파일을 삭제하고 실행하더라도 Admin 권한으로 실행됩니다.

--  출처 : EnjoyDev.com(www.enjoydev.com) --
블로그 이미지

요다할아범

,