메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

레지스트리 오류 복구 방법

한빛미디어

|

2006-07-18

|

by HANBIT

24,758

제공: 한빛미디어 네트워크 기사
저자: Mitch Tulloch, 한동훈 역

컴퓨터를 사용할 때 가장 곤란한 경우는 컴퓨터를 시작할 수 없는 경우다. 뭐가 문제인지 알 수 있는 내용은 제공하지 않고, 암호같은 에러 메시지만 보여주며, 문제를 해결할 엄두조차 내지 못한다. 예를 들어, 윈도우 XP를 시작할 때 다음과 같은 메시지를 받았다고 해보자.

윈도우 XP는 다음 파일이 없거나 손상되었을 수 있기 때문에 시작할 수 없습니다: \WINDOWS\SYSTEM32\CONFIG\SOFTWARE

또는 다음과 같은 메시지:

윈도우 XP는 다음 파일이 없거나 손상되었을 수 있기 때문에 시작할 수 없습니다: \WINDOWS\SYSTEM32\CONFIG\SYSTEM

능숙한 사용자라면 메시지에서 말하는 파일이 레지스트리 하이브(registry hive)라는 것을 알아챌 것이다. 레지스트리 하이브는 윈도우 레지스트리 정보를 담고 있는 이진 파일이다. 첫번째는 레지스트리 트리에서 HKLM\Software에 대한 정보를 담고 있는 Software 하이브이며, 두번째는 HKLM\SYSTEM에 대한 정보를 담고 있는 System 하이브다. 이 메시지는 레지스트리의 어떤 부분을 찾을 수 없거나 손상된 경우를 의미하며, 윈도우는 시작할 수 없다.

이 문제를 해결하는 가장 손쉬운 방법은 최근의 백업에서 시스템 상태 데이터를 복원하는 것이다. 컴퓨터의 시스템 상태 데이터는 레지스트리 하이브 파일, 부트 파일, COM+ 클래스 등록 정보 데이터베이스로 구성되어 있다. 윈도우 XP에 포함된 백업 유틸리티를 사용해서 시스템 상태를 쉽게 백업하고 복원하는 것이 가능하다.(그림1)

그림1
그림1. 레지스트리를 포함한 시스템 상태 데이터 백업.

팁: 만약 윈도우 백업에서 시스템 상태 항목이 없다면 관리자(Administrator)가 아닌 일반 사용자 계정으로 로그인한 경우다. 컴퓨터의 시스템 상태 데이터를 백업하려면 반드시 관리자로 로그인해야 한다. 또는 명령줄에서 "runas /user:administrator ntbackup" 명령으로 관리자 계정으로 백업 프로그램을 시작해야 한다.
다른 방법으로, 최근에 백업을 만든 적이 있는데, 백업한 것을 발견할 수 없다면, 운이 좋은 것이다. 백업 프로그램은 시스템 상태를 백업할 때, 기존 레지스트리 하이브를 %SystemRoot%\Repair 폴더에 복사한다. 따라서, 복구 콘솔로 로그인해서 손상되었거나 누락된 레지스트리 하이브를 %SystemRoot%\Repair에서 %SystemRoot%\System32\config로 복사해서 복원할 수 있다.

만약, 윈도우 백업 유틸리티를 사용해서 시스템 상태를 한 번도 백업한 적이 없다면? 이런 경우에도 다음 방법을 사용해서 백업할 수 있는 방법이 있다. 이 방법은 두 가지 단점이 있는데, 이 복구 방법중에 일부 단계는 시스템이 그 후에도 시작하지 않으면 지원할 방법이 없다는 점이며, 그렇다고 마이크로소프트(또는 나)를 비난해서는 안된다. 시스템이 OEM으로 미리 설치된 윈도우 XP를 사용중이었다면, 이 방법은 컴퓨터의 시스템 하이브에 적용된 OEM 변경사항에 따라 실패할지도 모른 다는 점이다.(어떤 경우든 간에, 최근 백업을 하지 않은 자신을 탓해야한다)

어쨌든, 레지스트리를 복구하는 단계는 다음과 같다:

1. 윈도우 XP 제품 CD로 시스템을 부팅하고, 복구 콘솔을 시작하기 위한 프롬프트가 나타나면 R을 누른다.

2. 관리자(Administrator) 계정의 비밀번호를 입력한다. 비밀번호가 없으면 엔터를 입력한다.

3. 운영체제의 시스템 파일이 C:\Windows에 있다고 가정하고, 다음 단계를 차례대로 따른다.

md tmp
copy c:\windows\system32\config\system c:\windows\tmp\system.bak
copy c:\windows\system32\config\software c:\windows\tmp\software.bak
copy c:\windows\system32\config\sam c:\windows\tmp\sam.bak
copy c:\windows\system32\config\security c:\windows\tmp\security.bak
copy c:\windows\system32\config\default c:\windows\tmp\default.bak
delete c:\windows\system32\config\system
delete c:\windows\system32\config\software
delete c:\windows\system32\config\sam
delete c:\windows\system32\config\security
delete c:\windows\system32\config\default
copy c:\windows\repair\system c:\windows\system32\config\system
copy c:\windows\repair\software c:\windows\system32\config\software
copy c:\windows\repair\sam c:\windows\system32\config\sam
copy c:\windows\repair\security c:\windows\system32\config\security
copy c:\windows\repair\default c:\windows\system32\config\default
exit

이는 현재 레지스트리 파일을 Repair 폴더의 레지스트리로 바꾸는 것이다. 즉, 윈도우 XP가 시스템에 처음 설치될 때 생성된 레지스트리 하이브의 백업본이다. 백업 유틸리티를 실행한 적이 없으면, Repair 폴더의 파일들도 업데이트되지 않는다. 이제, 컴퓨터는 재시작하면 동작하겠지만, 레지스트리 하이브는 윈도우 XP가 설치될 때 생성된 상태가 된다. 이는 레지스트리에서 나중에 사용자가 설치한 응용프로그램들을 인식하지 못한다는 것을 의미한다. 이제, 시스템에서 설치된 응용프로그램들을 인식하게 해보자. 이 작업을 하려면, 최근 복원 시점에서 레지스트리 하이브의 복사본을 이용해서 현재 하이브를 대체하는 시스템 복원 핵(hack)을 해야 한다.

4. 일단 시스템을 재식하고, 관리자로 로그인을 하고, 윈도우 탐색기를 실행해서, 도구 -> 폴더 옵션을 선택하고, "보기"을 선택해서 "숨겨진 파일 및 폴더 표시"를 선택하고, "보호된 운영 체제 파일 숨기기"를 선택을 제거합니다.(그림2)

그림2
그림2. 탐색기에서 숨겨진 파일과 시스템 파일을 볼 수 있게 수정

이제, 부트 드라이버의 루트에 있는 System Volume Information 폴더를 볼 수 있습니다. 이 폴더는 숨겨진 시스템 폴더이기 때문에 흐리게 표시됩니다.(그림3)

그림3
그림3. System Volume Information 폴더

5. 이 폴더를 더블 를킥하면, 접근이 금지되었다는 대화상자가 나타납니다. 이런 경우에는 여기를 참고하기 바랍니다.(컴퓨터가 사용하는 운영체제가 홈 에디션, 프로페셔널 에디션인지, 작업 그룹인지 도메인인지에 따라서 정확한 절차는 차이가 있습니다) System Volume Information 폴더 안에서 _restore_GID로 된 폴더들을 볼 수 있습니다. 이들 폴더는 컴퓨터에서 시스템 복원을 할 때 생성되는 것으로, 시스템 복구 포인트에 대한 정보를 담고 있습니다. 현재 시간과 다른 타임 스탬프를 가진 것을 열어 봅니다.(가장 최근의 폴더는 열지 않습니다) 이 폴더를 열면 RPn 형태로 된 폴더들을 볼 수 있습니다.(그림4)

그림4
그림4. 시스템 복구 시점 폴더

6. 이들 폴더 중에 하나를 열어보면 Snapshot 폴더를 볼 수 있습니다. 이 폴더를 열어서 다섯개의 파일들을 복사해서 C:\Windows\Tmp 폴더에 붙여넣기합니다.

그림5
그림5. 가장 최근의 백업 시점의 레지스트리 하이브 백업

왜 이 파일들을 Tmp 폴더로 복사하는가? 폴더를 옮겨야만 복구 콘솔에서 접근할 수 있기 때문이다.

7. Tmp 폴더를 열고, _REGISTRY_USER_.DEFAULT를 DEFAULT로, _REGISTRY_MACHINE_SECURITY를 SECURITY와 같은 형식으로 모든 파일 이름을 변경한다.

8. 윈도우 XP CD로 시스템을 부트하고, 복구 콘솔을 시작한다. 복구 콘솔에서는 다음 명령을 입력한다.

delete c:\windows\system32\config\system
delete c:\windows\system32\config\software
delete c:\windows\system32\config\sam
delete c:\windows\system32\config\security
delete c:\windows\system32\config\default
copy c:\windows\tmp\system c:\windows\system32\config\system
copy c:\windows\tmp\software c:\windows\system32\config\software
copy c:\windows\tmp\sam c:\windows\system32\config\sam
copy c:\windows\tmp\security c:\windows\system32\config\security
copy c:\windows\tmp\default c:\windows\system32\config\default
exit

이는 설치 과정에 생성된 원본 레지스트리 하이브를 최근의 복구 시점에서 얻은 레지스트리 하이브로 바꾼다. 이제, 시스템 복구를 열고 이전 복원 시점에서 복원을 선택하는 것으로 최근의 복원 시점으로 시스템을 복원할 수 있다.
TAG :
댓글 입력
자료실

최근 본 상품0