FC를 이용한 변경된 레지스트리 검색 방법과 레지스트리 설정 파일 만들기

윈도우의 기본 기능으로 설정 옵션이 저장되는 레지스트리를 찾는 방법과, 여러 PC에 동일한 환경을 구성하기 위해 레지스트리 설정 파일을 생성하는 방법을 설명한다. 또한, HKEY_CURRENT_USER와 HKEY_USER 레지스트리의 특징과 차이, SID(Secure ID)에 대해 간략하게 설명한다.

윈도우를 사용하면, 여러 가지 설정하게 된다. 바탕화면의 배경을 마음에 드는 것으로 설정해 놓거나, 시작 메뉴에서 볼 항목을 정하거나, 여러 가지 기능들을 끄거나 켜거나 등등해서, 각자 사용하기에 편하고 예쁜 환경을 만들어 둔다.

이런 설정들은 모두 윈도우 기본값이라는게 존재한다. 즉, 윈도우를 새로 설치하거나 하면 사용환경을 다시 내 입맛에 맞춰주기 위해, 윈도우 여기저기 숨어있는 설정들을 돌아다니며 들쑤셔대야 한다는 거다. 물론, 업데이트 설치와 드라이버 설치 등은 다 마쳤다는 가정하에 말이다. 이는 생각보다 시간이 꽤 들어가는 작업이다.

일반적인 환경에서야, 윈도우를 다시 깔고 할 일은, 1~2년에 한 두 번 정도 일어날 만한 일이다. 그런데 1~2년에 한 두 번이 아니라, 한주에 한 두 번이라면 어떨까? 꽤 많은 시간이 날아가 버린다. 이 아까운 시간을 조금이라도 줄여볼 수 없을까? 설정 파일 같은 것을 그냥 덮어 씌워버리거나 하면, 윈도우에서 하나하나 찾아 들어가서 클릭하고, 재부팅하고 등등등 할 필요가 없을 건데…

레지스트리(Registry) : 윈도우 설정 보관소

윈도우를 사용하는 사람들이라면 누구나 한 번 정도는 ‘레지스트리’라는 것을 들어 봤을 것이다. 이 레지스트리라고 하는 놈은, 윈도우와 윈도우에 설치된 각종 프로그램들의 설정 정보가 저장되어 있는 저장소 공간으로, 설정 항목에 해당하는 키(Key)와, 설정 내용에 해당하는 값(Value)로 구성된다. (일부 프로그램은 다른 방식을 사용하기도 한다.)

윈도우 레지스트리

그럼 레지스트리에서 우리가 설정한 정보가 저장되어 있는 위치를 찾아가 그 부분을 변경하거나, 레지스트리를 파일로 가지고 있다가 그냥 덮어 씌워버리면 되겠네?

정답이다. 그리고 윈도우에서는 친절하게도 사용자가 직접 레지스트리를 수정할 수 있는 도구까지 기본으로 제공해 준다.

레지스트리 편집기

키보드에서 [윈도우키 + R] 을 누르면 실행 창이 열린다. 여기에 regedit이라고 입력한 후 엔터키를 치면, 레지스트리 편집기라고 하는 프로그램이 실행된다.

레지스트리 편집기가 실행된 모습
레지스트리 편집기

레지스트리는 트리구조를 가지고 있다. 트리구조란, [상위분류] - [중간분류] - [작은분류] - [설정할 것] 처럼, 어떤 설정이나 목적지에 도달하기 위해서 위에서 부터 차근차근 단계를 밟아가는 형태의 구조를 말한다.

그럼 이제, 레지스트리 편집기에서 내가 원하는 레지스트리를 찾아서 값을 덮어씌우면 되겠네? 맞다. 그런데 아주 사소한 문제가 하나 있다. 일단 문제가 뭔지, 컴퓨터의 레지스트리를 파일로 저장해 보도록 하자. 레지스트리 편집기의 왼쪽 트리 메뉴에서 제일 위에 있는 ‘컴퓨터’를 선택한 다음, 마우스의 오른쪽 버튼을 누르면 ‘내보내기’라는 메뉴가 나타난다.

레지스트리 편집기에서 컴퓨터 항목을 우클릭 해 나타난 메뉴에는 축소 내보내기가 활성화 되어 있다.
내보내기 메뉴를 열어보자

내보내기를 클릭하면, ‘레지스트리 파일 내보내기’라는 창이 뜨면서, 저장할 이름을 입력하라고 한다. 원하는 경로를 선택해 준 다음, 원하는 이름을 입력해 주고, ‘저장’버튼을 눌러보자.

레지스트리 파일 내보내기 화면 저장 경로를 선택하고 있다.
레지스트리 파일 내보내기 화면

그럼 윈도우가 열심히 뭔가를 하고 있다는 뜻인, 모래시계 또는 뱅글뱅글 돌아가는 원 모양으로 마우스 포인터가 변경된다. 근데, 뭔가 좀 느낌이 안 좋다… 금방 휘리리릭 하고 끝나야 할 것 같은데, 생각보다 시간이 꽤 걸린다. 뭔가 잘못된 건가? 라는 생각이 들 때쯤, 우리가 익히 아는 화살표 모양으로 돌아오면, 레지스트리 저장 작업이 완료되었다는 의미이다. 저장된 파일을 메모장을 이용해 열어보자.

컴퓨터의 전체 레지스트리 파일을 편집기를 통해 열었다. 백만줄이 조금 넘어가는 분량이다.
컴퓨터의 전체 레지스트리 파일, 1,379,729 줄이다.

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

레지스트리 비교

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

먼저 레지스트리 에디터를 실행하고 설정을 바꿀 준비를 완료한 후, 위에서 했던 방법대로 컴퓨터의 전체 레지스트리를 내보내 준다. 그리고, 원하는 설정항목을 변경해 준다.

설정이 변경되었으면, 다시 레지스트리 에디터에서 컴퓨터의 레지스트리를 내보내 준다. 이때 한가지 주의해야 할 것은, 윈도우 시스템은 가만히 놔둬도 뭔가를 계속해댄다. 그리고 레지스트리는 생각보다 많은 정보들을 가지고 있다. 설정 변경 이외에, 뭔가 다른 짓거리를 하면, 그것도 레지스트리에 고스란히 저장된다. 그럼 뭐가 변경되었는지 찾아내기가 더 곤란해진다. 그런고로, 최단 시간 내에 원하는 설정을 변경하고, 변경된 레지스트리를 확보해야 한다.

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

이전 레지스트리와 변경후 레지스트리를 한줄씩 비교하고 있다.
메모장을 띄워두고 한줄 한줄 비교를...... 하라고?

눈알이 빠진다는 표현이 왜 등장했는지 절절히 느끼게 될 것이다. 그렇다, 이건 사람이 할만한 짓거리가 도저히 못 된다.

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

다행히도, 윈도우는 이런 짓거리를 대신해줄 수 있는 프로그램을 기본으로 내장하고 있다. 바로 FC라는 프로그램되겠다. 윈도우키+R 을 눌러 ‘실행’창을 열고, 여기에 CMD 라고 입력한 후 엔터키를 치면, 까만 화면의 도스 창이 실행된다. 도스 창에서 CD 명령어를 이용해, 앞에서 저장한 두 레지스트리 파일이 있는 디렉토리로 이동한다. 그리고 다음의 명령어를 입력 해 준다.

FC /U 1.reg 2.reg > RESULT.TXT

이 명령은 다음과 같은 의미를 가진다.

  • /U 옵션 : 유니코드 텍스트 파일 형태로 비교한다.
  • 1.reg 2.reg : 비교할 두 파일 명 (파일 이름과 순서는 상관 없다.)
  • > RESULT.TXT : 프로그램의 출력 결과를 RESULT.TXT라는 파일로 저장한다.

이렇게 생성된 RESULT.TXT라는 파일을 메모장에서 열어보면, 두 파일을 비교해서 찾은, 서로 다른 부분이 저장되어 있다. 여기서부터는 레지스트리에 대한 약간의 지식과 감이 필요하긴 한데, 위에서 필자는 ‘최근에 추가된 앱 표시’ 를 변경했다고 했다. 뭔가 연관이 있을 듯한 키 네임을 찾아야 한다. 일단 비슷해 보이는 이름을 하나 찾았다.

RESULT.TXT 파일을 열어 비교 결과를 찾고 있다.
ShowRecentList..최근에 추가된 앱 표시.. 왠지 느낌이 비슷하다.

하지만 이 설정값이 레지스트리 전체에서 어디에 위치하는지는 RESULT.TXT 만으로 알 수 없다. 앞서 캡처한 전체 레지스트리 파일에서 저 문자열을 검색해, 레지스트리의 위치가 어디에 있는지 찾아본다.

레지스트리 키를 찾고 있다.
ShowRecentList가 어디에 있는지 찾아보자.

우리가 찾던 레지스트리 값은 [HKEY_USERS\S-1-5-21-어쩌고저쩌고\Software\Microsoft\Windows\CurrentVersion\Start] 라는 곳에 있는 것을 확인했다. (어쩌고저쩌고는 필자가 수정한 부분으로, 실제는 이상한 문자들이 적혀 있을 것이다.) 실제로 이게 맞는가 확인해 볼 차례이다. 방법은 간단하다. 설정을 변경해 보고 레지스트리가 바뀌는지 확인해 보면 된다. 설정 창과 레지스트리 편집기를 나란히 실행해 두고 레지스트리 편집기의 왼쪽 트리에서 위의 위치를 찾아 들어 간 다음, 값의 변화를 보도록 하자

레지스트리 편집기와 설정창의 띄워두고 설정 변경할 준비를 완료했다.
과연 바뀔 것인가?
설정을 변경하니 ShowRecentList가 1에서 0으로 변경되었다.
바!뀌!었!따!아!

왼쪽에 있는 ‘최근에 추가된 앱 표시’ 가 활성화되어 있을 때는 ‘ShowRecentList’의 값이 1인 것을 확인할 수 있다. 비활성화 하면, 레지스트리 편집기에서 보이는 값이 0으로 바뀌는 것을 확인할 수 있다. (설정을 변경한 후 레지스트리 값을 다시 읽기 위해, 다른 레지스트리를 표시했다 다시 돌아와서 확인해야 한다.) 오오! 드디어 찾!았!다! 하지만, 아직 끝난 게 아니다

레지스트리와 SID

잠깐 위로 다시 올라가 보면, 우리가 찾은 레지스트리 설정값은 [HKEY_USERS\S-1-5-21-어쩌고저쩌고\Software\Microsoft\Windows\CurrentVersion\Start] 에 존재하고 있었다. 이 경로 중에서 ‘S1-5-21’로 시작하는 문자열을 ‘보안 식별자(SID:Security Identifier)’라고 부른다. 윈도우는 기본적으로, 한대의 PC를 여러명의 사용자가 사용하는 것을 생각하고 만들어진 운영체계이다. 우리가 윈도우를 설치할 때 혹은 컴퓨터를 켤 때 ID와 비밀번호를 입력하는 이유가 그것이다.

SID는 사용자 계정이 생성될 때 생성된 무작위의 문자열 이고, 윈도우는 ID가 아니라, 이 SID를 가지고 사용자를 구분한다. SID에 대한 자세한 이야기는 별도로 하기로 하고, 암튼 여기서 중요한 것은, 우리가 찾은 레지스트리 경로에 SID가 존재한다는 것이다.

만약 다른 PC에 윈도우를 설치했다고 하면, 우리는 SID가 포함되어 있는 저 경로를 사용할 수 없다. 각 PC마다 각 계정마다 SID가 다를 것이기 때문이다. 그렇기 때문에 SID가 포함되지 않은 다른 경로를 찾아야 한다. 그리고 그 경로가 바로 [HKEY_CURRENT_USER](줄여서 HK_CRNT_USER라고 적기도 한다.) 되시겠다.

[HKEY_USERS]와 [HKEY_CURRENT_USER]의 차이

윈도우 시스템은 부팅할 때 ID를 입력받는다. 그리고 그 ID에 해당하는 SID를 찾아보고, [HKEY_USERS]의 해당 SID에 대한 레지스트리 정보를 [HKEY_CURRENT_USER] 로 가지고 온다. 잘 보면 두 레지스트리의 항목이 SID가 있고 없고의 차이만 있을 뿐 구조가 동일한 것을 알 수 있다. 그리고 윈도우는 [HKEY_USERS]가 아닌, [HKEY_USERS]에서 설정값들을 복사해 온, [HKEY_CURRENT_USER]의 설정값들을 가지고 윈도우를 동작시킨다.

레지스트리 편집기에서 [HKEY_CURRENT_USER]와 [HKEY_USERS]를 열어 키값이 동일한 것을 확인하고 있다.
[HKEY_CURRENT_USER]와 [HKEY_USERS]의 레지스트리 항목이 동일하다.

실제로 위에서 찾은 [HKEY_USERS\S-1-5-21-어쩌고저쩌고\Software\Microsoft\Windows\CurrentVersion\Start] 경로 대신, [HKEY_CRNT_USER\Software\Microsoft\Windows\CurrentVersion\Start] 에도 동일한 키 값이 존재한다. 또한, 설정값을 변경하면 [HKEY_USERS]의 것을 변경할 때와 마찬가지로 설정이 변경되어 적용되는 것을 볼 수 있다. 거기에 더하여, [HKEY_CURRENT_USER]의 값을 변경하면, [HKEY_USERS]의 값도 동일하게 변경된다.

한 쪽 레지스트리를 변경할 때 다른 쪽 레지스트리도 함께 변경되는 모습을 레지스트리 편집기에서 확인한다.
한 쪽 레지스트리를 변경하면 다른 쪽도 동일하게 반영된다.

[HKEY_CURRENT_USER]는 현재 로그인 된 사용자의 설정이 저장된 저장소를 의미한다. 윈도우는 기본적으로, 이 커런트 유저에 저장된 레지스트리들을 바라본다. 그리고 다른 사용자가 사용할 때를 대비하여, 커런트 유저에 변경된 레지스트리 내용들을 동일하게 [HKEY_USERS]에 위치한 현재 사용자의 SID에 해당하는 레지스트리에 기록해 둔다. 둘 중하나만 바꿔도 동일하게 바뀌는 이유이다.

이런 이유로 SID와 상관없이, 다른 PC에서도 적용 가능한 레지스트리 수정을 위해서는 [HKEY_USERS] 가 아닌, [HKEY_CURRENT_USER]에 있는 레지스트리 값을 조정해 주어야 한다.

레지스트리 파일

이제 레지스트리를 파일로 만들어 보자. 이미 몇 번 해 보았겠지만, 이번에는 윈도우의 모든 레지스트리가 아닌, 우리가 원하는 레지스트리만 골라서 파일로 저장할 것이다. 왼쪽의 트리에서 저장할 레지스트리를 선택한 다음 우클릭을 하면 ‘내보내기’ 메뉴가 나온다.

마우스 우클릭으로 레지스트리 내보내기 메뉴를 호출함
레지스트리를 내보내자

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

모두 삭제하고 필요한 줄만 남긴 모습.
불필요한 것들은 날려버리자.

이때 주의할 것은, 제일 윗줄의 ‘Windows Registry Editor Version x.xx’ 라고 적힌 줄은 건드리면 안 된다. 이 줄은 이 파일이 레지스트리 파일인 것을 나타내는 문구로, 이 문구가 없으면 이 파일로 레지스트리 변경을 할 수 없게 된다.

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

마무리

이렇게 만든 나만의 레지스트리 설정 파일이 있으면, 두고두고 사용하며 불필요한 시간 낭비를 줄이고, 동일한 설정을 정확히 재현할 수 있다. 사실, 레지스트리의 변경사항을 찾아주는 좀 더 효율적인 도구들이 있기는 하다. 하지만, 그 근본적인 동작은 위에 설명된 것과 다르지 않다. 또한, 자주 사용되는 레지스트리의 위치는 검색을 통해 어렵지 않게 찾아낼 수 있다.

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