FC를 이용한 윈도우 레지스트리 변경 추적과 환경설정 레지스트리 저장 방법

윈도우 설치할 때마다 기본 설정을 다시 잡느라 시간이 아깝다면? FC 명령으로 레지스트리 변경을 추적하고 원하는 설정만 저장해 재적용하는 방법을 설명합니다. 또한 HKEY_CURRENT_USER와 SID 기반 HKEY_USERS의 차이도 정리했습니다.

윈도우를 쓰다 보면 바탕화면 배경을 바꾸거나, 시작 메뉴를 정리하거나, 여러 기능을 켜고 끄는 등 나만의 환경을 만들게 된다. 그런데 이런 설정은 새로 설치하거나 초기화할 경우 다시 처음부터 설정을 잡아야 한다.

일반적으로는 PC를 새로 구입했을 때나, 한두 해에 한 번 정도 하는 일이라 크게 문제 될 게 없다. 하지만 업무나 테스트 때문에 윈도우를 자주 다시 설치해야 하는 상황이라면 이야기가 달라진다. 한 번 설정할 때마다 시간이 꽤 들고, 같은 작업을 반복해야 하니 그만큼 시간도 아깝다.

하지만, 설정값을 한 번에 적용할 수 있다면 어떨까? 메뉴를 일일이 찾아 들어가지 않고도, 원하는 환경을 그대로 복원할 수 있다면 훨씬 편할 것이다. 이 글은 바로 그 방법을 다룬다.

레지스트리(Registry) : 윈도우 설정의 저장소

윈도우 시스템을 조금 다뤄본 사람이라면 레지스트리(Registry)라는 말을 한 번쯤 들어봤을 것이다. 레지스트리는 윈도우 자체와 각종 프로그램의 설정 정보가 모여 있는 거대한 저장소다. 이 안에는 설정 항목을 나타내는 키(Key)와, 그 값을 저장하는 값(Value)이 쌍을 이루어 저장된다. (일부 프로그램은 레지스트리가 아닌 별도의 파일로 설정을 관리하기도 한다.)

“그럼 우리가 원하는 설정이 저장된 위치만 찾으면, 그 값을 바꾸거나 파일로 저장해 두었다가 나중에 불러오면 되는 거 아닌가?”

정답 되시겠다! 그리고 다행스럽게도, 윈도우는 사용자가 레지스트리를 직접 확인하고 수정할 수 있는 도구까지 기본으로 제공한다.

레지스트리 편집기

키보드에서 윈도우키 + R을 누르면 실행 창이 열린다. 여기에 regedit을 입력하고 엔터를 누르면 레지스트리 편집기가 실행된다.

Windows 레지스트리 편집기(Regedit) 초기 화면에서 주요 루트 키(HKEY_CLASSES_ROOT, HKEY_CURRENT_USER 등)가 보이는 모습.
레지스트리 편집기

레지스트리는 트리(tree) 구조를 가지고 있다. 즉, 상위 분류 → 중간 분류 → 세부 분류 → 설정 항목처럼 단계별로 내려가는 구조이며, 원하는 설정에 도달하려면 이 트리를 따라 차근차근 이동해야 한다.

그렇다면 레지스트리 편집기에서 원하는 위치를 찾아 값을 덮어씌우면 되지 않을까?

맞지만, 아주 사소한 문제가 하나 있다. 그 문제가 무엇인지 직접 확인해 보자. 레지스트리 편집기의 왼쪽 트리에서 가장 상단의 컴퓨터를 선택한 뒤 마우스 오른쪽 버튼을 누르면 내보내기 메뉴가 나타난다.

레지스트리 편집기에서 ‘컴퓨터’ 항목을 우클릭하여 레지스트리 내보내기 메뉴를 연 화면.

내보내기를 클릭하면 레지스트리 파일 내보내기 창이 뜨며, 저장할 이름과 경로를 지정할 수 있다. 원하는 위치를 선택하고 파일명을 입력한 뒤 저장을 눌러보자.

레지스트리 파일 내보내기 창에서 파일 이름을 입력하고 저장할 위치를 선택하는 Windows 저장 대화 상자 화면.

그러면 마우스 포인터가 모래시계나 회전하는 원 형태로 바뀌며 작업이 진행된다. 그런데 느낌이 좀 이상하다… 금방 끝날 것 같았는데 의외로 시간이 제법 걸린다. 혹시 잘못된 건가 싶을 때쯤 포인터가 다시 원래 모양으로 돌아오면, 내보내기가 완료된 것이다. 이제 저장된 파일을 메모장으로 열어보자.

수백만 줄에 이르는 전체 윈도우 레지스트리 파일을 텍스트 편집기에서 연 화면으로, 방대한 레지스트리 데이터가 표시되어 있다.

앞서 말했듯이, 레지스트리에는 윈도우의 모든 설정이 저장된다. 말 그대로 ‘모든 설정’이다. 이제 이 수백만 줄 사이에서 내가 원하는 설정을 직접 찾아내기만 하면 된다. 참 쉽죠?

레지스트리 비교

레지스트리에 설정이 저장되어 있다고 했으니, 설정을 변경했다면 레지스트리의 어딘가가 변경되었을 것이다. 설정을 변경하기 전과 변경한 후의 레지스트리를 비교해서, 뭔가 다른 게 있다면, 거기가 바로 우리가 찾는, 설정이 저장되는 위치가 된다.

우선 레지스트리 편집기를 실행한 뒤, 설정을 변경하기 전에 전체 레지스트리를 내보낸다. 그런 다음 원하는 설정 항목을 실제로 변경한다.

설정을 변경했다면 다시 한 번, 동일한 방식으로 전체 레지스트리를 내보낸다. 이때 주의해야 할 점이 있다. 윈도우 시스템은 사용자가 아무것도 하지 않아도 백그라운드에서 여러 작업을 수행하는데, 그 기록 역시 레지스트리에 남는다. 때문에 시간이 흐를수록 변경된 레지스트리가 많아진다. 따라서 최대한 짧은 시간 안에 설정을 변경하고 두 번째 레지스트리 파일을 확보하는 것이 중요하다.

필자는 윈도우 11의 시작 화면의 최근에 추가된 앱 표시기능을 해제 시켜 보았다. 이렇게 확보된 두 레지스트리 파일을 비교해서 서로 다른 부분을 찾아내기만 하면 된다. 메모장을 열고, 한 줄 한 줄 비교해 보자.

두 개의 레지스트리 파일을 메모장에서 나란히 열어 수동으로 비교하는 모습.
다른 그림 찾기 시작

눈알이 빠진다는 표현이 괜히 있는 것이 아니다. 이런 방식은 사람이 할 만한 일이 도저히 아니다. 하지만 윈도우에는 이 작업을 자동으로 처리해 줄 수 있는 기본 도구가 존재한다.

FC를 이용한 레지스트리의 비교

윈도우는 파일 또는 디렉토리의 내용을 비교하는 도구를 제공하는데, FC라는 프로그램이다. 윈도우키 + R을 눌러 ‘실행’창을 열고, 여기에 CMD 라고 입력한 후 엔터키를 치면, 명령 프롬프트(도스창)가 실행된다.

cd 명령어를 이용해, 앞에서 저장한 두 개의 레지스트리 파일이 있는 디렉터리로 이동한 뒤, 다음의 명령어를 입력해 준다.

FC /U 1.reg 2.reg > RESULT.TXT
FC
파일 또는 디렉터리를 비교하는 윈도우 기본 명령
/U
유니코드 텍스트 형식으로 비교
1.reg 2.reg
비교 대상 파일 (순서는 상관 없음)
>
출력 리디렉션 기호
RESULT.TXT
비교 결과를 저장할 파일명

이렇게 생성된 RESULT.TXT 파일을 메모장으로 열면, 두 레지스트리 파일의 차이만 모아볼 수 있다. 여기서부터는 약간의 감이 필요하다.

앞서 변경한 설정은 최근에 추가된 앱 표시였다. 이와 관련될 만한 키 네임을 찾아야 하는데 ShowRecentList라는 이름이 관련되어 있을 듯해 보인다.

FC 명령어 결과 파일에서 ShowRecentList 등 변경된 레지스트리 값이 표시된 모습.

RESULT.TXT만으로는 해당 값이 레지스트리 전체에서 어느 경로에 위치하는지 알 수 없다. 앞서 저장해 둔 전체 레지스트리 파일에서 해당 문자열을 검색하여 실제 경로를 찾아야 한다.

전체 레지스트리 파일에서 특정 키 이름을 검색하여 실제 경로를 찾는 과정.

검색 결과, 해당 설정은 다음 경로에 저장되어 있음을 확인할 수 있다.

[HKEY_USERS\S-1-5-21-어쩌고저쩌고\Software\Microsoft\Windows\CurrentVersion\Start]

이 값이 실제로 맞는지 확인하기 위해, 설정 화면과 레지스트리 편집기를 나란히 열고 해당 위치를 찾아보자. 설정을 켜고 끄면서 값이 변하는지 확인하면 된다.

설정 변경 전 레지스트리 편집기에서 ShowRecentList 값이 1로 설정된 상태를 보여주는 화면.
ShowRecentList 값이 1 으로 설정된 모습
설정 변경 후 레지스트리 편집기에서 ShowRecentList 값이 0로 설정된 상태를 보여주는 화면.
ShowRecentList 값이 0 으로 바뀐 모습

최근에 추가된 앱 표시가 활성화되었을 때는 ShowRecentList 값이 1이며, 비활성화 하면 0으로 바뀌는 것을 확인할 수 있다. (설정을 변경하고 다른 키를 선택한 뒤 다시 돌아와 값이 갱신되었는지 확인하면 된다.) 레지스트리가 저장되는 위치를 찾은 것이다! 하지만, 아직 끝난 게 아니다.

레지스트리와 SID

우리가 찾은 레지스트리 설정값은 아래의 위치에 존재하고 있었다.

[HKEY_USERS\S-1-5-21-어쩌고저쩌고\Software\Microsoft\Windows\CurrentVersion\Start]

이 경로 중에서 S-1-5-21로 시작하는 문자열을 보안 식별자(SID:Security Identifier)라 한다. 윈도우는 기본적으로 여러 사용자가 한 PC를 사용할 수 있도록 설계되어 있으며, 각 사용자를 구분할 때 계정 이름(ID)이 아니라 SID를 사용한다.

SID는 사용자 계정이 생성될 때 자동으로 만들어지는 고유한 값이다. 때문에 특정 PC에서 찾은 레지스트리 경로에 SID가 포함되어 있다면, 그 경로를 다른 PC에서 그대로 사용할 수 없다. PC마다, 계정마다 SID가 모두 다르기 때문이다.

따라서 공통적으로 사용할 수 있는 경로가 필요한데, 그 역할을 하는 것이 바로 [HKEY_CURRENT_USER] (줄여서 HKCU)이다.

[HKEY_USERS]와 [HKEY_CURRENT_USER]의 차이

윈도우는 부팅 과정에서 사용자가 입력한 계정의 SID를 확인한 다음, [HKEY_USERS]에 저장된 해당 SID의 레지스트리 정보를 불러와 [HKEY_CURRENT_USER]로 매핑해 사용한다.

실제로, 두 레지스트리를 열어보면 구조가 거의 동일한것을 알 수 있다. 즉, [HKEY_CURRENT_USER]는 현재 로그인된 사용자를 위한 현재 세션용 레지스트리인 것이다.

레지스트리 편집기에서 HKEY_CURRENT_USER와 HKEY_USERS의 SID별 구조를 비교해 보여주는 화면
[HKEY_CURRENT_USER]와 [HKEY_USERS]두 레지스트리의 구조는 동일하다

실제로 앞에서 찾은 경로 [HKEY_USERS\S-1-5-21-…\Software\Microsoft\Windows\CurrentVersion\Start][HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Start]에서 확인해 보면 동일한 값이 존재한다. 또한 한쪽 값을 변경하면 다른쪽 값도 변경되는 것을 확인할 수 있다.

[HKEY_CURRENT_USER]현재 로그인한 사용자 계정의 설정을 담는 영역이며, 윈도우는 기본적으로 이 값을 기준으로 사용자 환경을 동작시킨다. 동시에 변경된 값은 [HKEY_USERS]의 해당 SID 경로에도 그대로 기록된다.

따라서 SID와 무관하게 다른 PC에서도 동일하게 적용 가능한 레지스트리 파일을 만들려면, [HKEY_USERS]가 아닌 [HKEY_CURRENT_USER] 경로의 값을 사용해야 한다.

레지스트리 파일

이제 레지스트리를 파일로 만들어 보자. 앞에서는 전체 레지스트리를 내보냈지만, 이번에는 특정 설정만 선택해서 파일로 저장해 보겠다. 왼쪽 트리에서 원하는 레지스트리 키를 선택한 뒤 마우스 오른쪽 버튼을 누르면 내보내기 메뉴가 나타난다.

레지스트리 편집기에서 Start 키를 우클릭하여 내보내기 메뉴를 표시한 화면

파일을 저장해서 메모장으로 열어보면, 이제는 봐줄 만한 정도의 내용들이 적혀 있다. 불필요한 내용은 날려주고, 우리가 원하는 값만 남겨둔다.

ShowRecentList 값을 0으로 설정한 REG 파일

이때 주의할 것은, 제일 윗줄의 Windows Registry Editor Version x.xx 라고 적힌 줄은 건드리면 안 된다. 이 문구는 해당 파일이 유효한 레지스트리 파일임을 알려주는 헤더이며, 이 줄이 없으면 윈도우는 파일을 레지스트리 형식으로 인식하지 못한다.

이 파일을 다른 컴퓨터에 복사 한 다음, 더블 클릭하여 실행하면 레지스트리에 적용하겠느냐 묻는 질문이 나온다. 적용하겠다고 선택 하면 설정이 변경된다.

요약: 변경된 레지스트리를 찾아 윈도우 설정 변경을 간소화 하는 방법

  1. 전체 레지스트리를 먼저 백업한다.
  2. 윈도우에서 원하는 설정을 변경한다.
  3. 다시 전체 레지스트리를 백업한다.
  4. FC /U before.reg after.reg로 변경점 추출
  5. diff 결과에서 키 이름을 확인한다.
  6. 전체 레지스트리에서 검색하여 실제 경로 확인
  7. SID 경로는 HKCU로 변환하여 .reg 파일 생성
  8. 필요하면 다른 PC에서 .reg 파일로 자동 설정 적용

마무리

이렇게 만들어 둔 나만의 레지스트리 설정 파일은 반복적인 설정 작업에 걸리는 시간을 크게 줄여 주며, 여러 PC에서 동일한 환경을 정확하게 재현할 때 매우 유용하다.

물론, 레지스트리 변경 사항을 자동으로 추적해 주는 더 편리한 도구들도 많다. 하지만 그 내부 동작 원리는 결국 이 글에서 설명한 방식과 다르지 않다. 또한 자주 사용되는 레지스트리 위치는 검색만으로도 비교적 쉽게 찾을 수 있다.

하지만 이러한 도구들을 사용하기에 곤란한 환경에 놓이거나, 검색을 통해 찾을 수 없어 원하는 레지스트리를 직접 알아내야 하는 상황이 생기기도 한다. 그러한 상황에 계시다면, 이 글을 기억해 주시기 바란다. 모두들 행복하시라~!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다