본문 바로가기

프로그램/소개/다운로드/메뉴얼

Regshot 2.0.1.70 - 작고 가벼운 레지스트리 변경 추적 비교 프로그램


블로그 다운로드 [v2.0.1.70]

Regshot-2.0.1.70.zip

※ 해당 프로그램을 제작 배포하던 공식 제작사가 사라졌기 때문에 제작사 공식 링크는 존재하지 않습니다.


윈도우와 관련된 대다수의 설정들은 레지스트리를 통해 관리되는 것이 보통입니다. 즉, 이 말은 많은 경우 윈도우의 어떠한 설정을 변경하는 것은 그에 맞는 레지스트리 값을 변경하는 것으로도 진행할 수 있다는 것입니다. 그래서 만약 레지스트리를 통해 어떠한 윈도우의 설정을 바꾸고자 한다면, 이 때 우리에게 필요한 것은 어떠한 레지스트리 값이 해당 설정과 관련된 것인 지를 아는 것입니다.

이것은 원하는 설정을 변경하고 난 전후의 레지스트리를 비교해보는 것으로 알아낼 수 있습니다. 즉, 원하는 설정을 변경하기 전의 레지스트리와 해당 설정을 변경하고 난 후의 레지스트리를 비교하여 (두 시점의) 변화된 부분을 살펴보면 해당 설정과 관련된 레지스트리 값과 그 데이터를 찾아낼 수 있는 것이죠. 간단하죠?

그래서 이러한 작업을 돕기 위해 윈도우에서 일어나는 레지스트리의 변경 사항을 비교 분석하여 추적할 수 있는 프로그램들이 몇몇 존재하고 있습니다. 그 중에서도 오늘 소개해드리는 Regshot 은 무료에 설치도 필요 없고, 작고 가볍기 때문에 많이 애용되는 프로그램입니다.


Regshot 은 설치가 필요 없기에 압축을 풀면 나오는 Regshot.exe 파일을 실행하시면 바로 사용할 수 있습니다. 참고로 압축을 풀면 나오는 Release 폴더에는 32비트 버전이 담겨 있으며, Release64 폴더에는 64비트 버전이 담겨 있습니다. 기능상의 차이는 없기 때문에 64비트 윈도우 사용자는 아무 버전이나 사용하셔도 상관 없습니다.




1. Regshot 을 통해 레지스트리의 변경 내용을 추적하는 방법

그럼 간단하게 Regshot 을 통해 레지스트리의 변경 내용을 실제로 추적해보도록 하겠습니다. 찾아낼 레지스트리 목표는 간단하게 "윈도우 탐색기에서 숨김 항목 표시 여부 설정" 에 해당하는 레지스트리 값이 무엇인지 알아보는 것으로 하도록 하죠.

**. 우리가 알아 볼 윈도우 설정입니다. 현재 상태는 숨김 항목을 표시하도록 설정되어 있습니다.



01. Regshot 을 실행한 후 첫째 저장을 클릭하고 전체 레지스트리를 선택합니다.



02. 비교를 원하는 설정을 바꿔줍니다.



03. 그대로 다시 둘째 저장을 클릭한 후 전체 레지스트리를 선택합니다.



04. 간략하게 어떤 레지스트리 키가 변경되었는지 보여줍니다. 어떠한 레지스트리 키의 변경 내용을 확인할 것인지 선택할 수 있습니다. 확실하게 어떠한 레지스트리키가 관련된 것인지 모르기 때문에 모두 선택된 그 상태 그대로 확인을 클릭합니다.



05. 변경된 레지스트리에 대한 정보를 출력해줍니다.



자 이렇게 해당 설정을 바꿨을 때 변경되는 레지스트리 값과 그 데이터를 얻었습니다. 그런데 이러한 변경된 레지스트리 항목 중에 정확하게 무엇이 해당 설정에 해당할 지는 자신이 직접 테스트를 통해 알아내야 합니다. 여기에서는 정보도 필요하고 나름의 센스도 필요합니다.

일단 여기에서는 두 개의 레지스트리 값이 변경된 것을 확인할 수 있습니다. 그런데 우리가 알아내기로 한 설정이 무엇이었죠? "윈도우 탐색기에서 숨김 항목 표시 여부" 였죠. 윈도우 탐색기는 Explorer 이고, 두 값 중에 Hidden 이라는 값이 왠지 숨김이랑 굉장히 관련이 있을 것만 같은 예감이 팍 들지 않나요?

간단하게 정리를 해보면 윈도우 탐색기의 "숨김 항목" 설정을 "표시 → 숨기기" 로 설정을 바꿨더니 레지스트리의 "Hidden" 값이 "1 → 2" 로 바뀌었습니다. ShellState 도 고려를 해봐야 하지만, 일단 내버려두고 뭔가 예감이 오는 녀석을 위주로 살펴 봅시다. 그럼 1차적으로 이런 가설을 내릴 수 있습니다.

Hidden 값이 1 일 땐 숨김 항목 표시
Hidden 값이 2 일 땐 숨김 항목 숨기기


그럼 이 가설대로 레지스트리를 변경한 후 폴더를 새로 고침하여 확인을 해봅니다. [현재 설정은 단순히 윈도우 탐색기에서 새로 고침만 해도 되는 설정이지만 만약에 어떠한 설정이 로그오프 후 재로그인해야만 적용되거나 정책을 적용해야 한다면 재로그온 또는 정책 적용 등의 작업을 진행해야 합니다. 적절히 센스껏 확인하세요.]





맞네요. 그럼 이제 여기에서 2차로 함께 바뀐 ShellState 는 무엇이었을지 고민을 좀 해봐야겠죠? 일단은 Hidden 값 만으로 설정이 정상적으로 바뀌었기 때문에 ShellState 가 숨김 속성에 어떠한 영향을 미치는 값은 아니란 것을 유추할 수 있습니다. 근데 값 이름이 Shell State 이고, 이를 단어 그대로 풀면 셀의 상태가 되죠. 여기에서 셀은 익스플로러 셀(윈도우 탐색기)를 의미하는 것일테고, 그것의 어떠한 상태에 관련된 값이라는 것을 예상해볼 수 있습니다.


그런데 여기에서 잠깐! 글에서는 윈도우 탐색기의 숨김 파일 속성을 변경하는 것은 윈도우 8 에 새롭게 추가된 리본 메뉴를 통해 작업을 했습니다. 하지만 전통적인 방법은 그게 아니라 원래는 폴더 옵션으로 들어가서 작업을 하는 것입니다. 그럼 해당 방식으로 작업하면 과연 레지스트리의 변화에 어떠한 차이가 있을까요?




그랬더니 위와 같은 결과가 나왔습니다. 보신 것처럼 폴더 옵션으로 작업했더니 ShellState 값은 아무런 변화가 없네요. 이전 작업과의 차이는 이전엔 리본 메뉴로 설정을 했고, 지금은 폴더 옵션에서 설정을 했다는 것 뿐입니다. 그럼 ShellState 값의 변화는 리본 메뉴의 무엇과 관련이 있을 거라고 생각해볼 수 있는 거죠. State 니까 간단하게 생각해본다면 체크 박스의 체크 상태? 리본 메뉴에 존재하는 체크 박스들의 체크 유무에 따라 해당 헥스 값의 특정 바이트 값이 변한다? 뭐 이런 식으로 유추해볼 수 있겠네요.

근데 해당 값은 우리가 파악하길 원했던 설정과는 크게 상관이 없는 값이라고 결론이 나왔기 때문에 해당 값에 대한 고찰은 대충 이정도에서 적절히 끊어주는 게 좋을 듯 합니다. 레지스트리에 대한 변경 사항 추적은 이러한 식으로 하면 됩니다. 간단하죠?




2. 레지스트리의 변경 내용을 추적하는 것에 대한 조언

참고로 글에서 숨김 항목 표시 유무를 설정하는 Hidden 값은 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] 키에 존재하고 있었습니다. 그렇다면 [...\Advanced] 키는 폴더 옵션에 관련된 설정들이 모여있는 키일 확률이 매우 높다는 의미가 됩니다.

그래서 추가로 살펴보면 그 바로 아래에 HideFileExt 라는 값이 떠억하니 존재하고 있죠. Hide 는 역시나 무언가를 숨기는 것에 관련된 설정일 확률이 높겠죠. FileExt 는 Filename Extension 의 줄임말 즉, 확장자를 의미합니다. 그렇다면 확장자 숨기기? 아하! 폴더 옵션 중에 "알려진 파일 형식의 파일 확장자명 숨기기" 라는 옵션이 있었죠. 그럼 생각했던 대로 [...\Advanced] 키는 폴더 옵션에 관련된 설정들이 모여 있는 키가 맞는 것 같습니다.

그런데 현재 HideFileExt 값의 데이터가 0 이네요. 그럼 보통 이러한 값의 데이터 형식이 더블 워드(DWORD)일 때는 대체로 Boolean 데이터 타입을 가지는 경우가 많고, 그렇다면 0 은 False, 1 은 True 일테니 이걸 1 로 바꿔주면 확장자를 숨기는 것일 확률이 높다고 판단할 수 있는 거죠. 뭐 꼭 그렇다는 것은 아니고 Hidden 값의 예처럼 2 나 3 과 같은 전혀 다른 값을 가질 수도 있습니다. 그러니 테스트를 해보거나 아니면 또 Regshot 으로 변경 내용을 추적하셔서 확실하게 파악하는 것이 좋습니다.

아무튼, 이처럼 관련된 설정들은 하나의 레지스트리 키 하위에 모여 있는 경우가 많기 때문에, 어떠한 설정에 대한 레지스트리를 찾아내면 연관된 다른 설정에 관련된 레지스트리를 찾아내는 것은 매우 손쉽게 해결되는 경우가 많습니다.

참고로 글의 예제에서 보신 것처럼 레지스트리 키나 값의 이름은 보통 그 값이 무엇을 의미하는 것인지를 함축하고 있는 경우가 매우 많습니다. 레지스트리 키와 값의 이름만으로도 많은 걸 유추할 수 있다는 것도 기억하시면 좋을 듯 합니다.


다음으로 생각해보면 좋은 것이 HKEY_LOCAL_MACHINE 은 전체 사용자에게 적용되는 부분들에 대한 레지스트리들의 모음이고, HKEY_CURRENT_USER 는 현재 사용자 계정에만 적용되는 레지스트리들의 모음이라는 겁니다. 즉, 해당 값이 어떠한 루트키 하위에 위치해있느냐도 잘 살펴보시면 좋습니다.


또한 웹 검색을 통해 정보를 모으는 것도 굉장히 많은 도움이 됩니다. 레지스트리는 윈도우에서도 좀 전문적인 분야에 속한다고 할 수 있습니다. 그래서 이러한 검색에는 마이크로소프트 사이트에서 직접 검색하시거나 구글 검색을 사용하시는 것이 좋습니다. 특히나 구글이 이러한 분야에선 좋은 정보들을 많이 찾아주죠. 만약 특정 레지스트리 키나 값을 검색했는데 검색 결과에 마이크로소프트의 TechNet 이나 MSDN 문서가 뜬다면 해당 정보를 적극 참고하는 것이 좋습니다. 그게 결정적인 정보일 가능이 매우 높으니까요.

참고로 아래는 이번 글에서 예제로 살펴 본 키를 실제로 구글에서 검색해본 결과이고, 링크는 그렇게 찾아낸 마이크로소프트 MSDN 의 문서입니다.



마지막으로 레지스트리 추적 비교 작업을 진행할 때 꼭 유의하셔야 할 것은 비교하려는 대상에 해당하는 작업 외에 최대한 다른 작업은 끼어들지 않게 하시라는 겁니다. 안 그러면 굉장히 많은 레지스트리 변화 때문에 추적 작업이 힘들어질 수 있습니다. 예를 들어 쉽게 이번 글에서 알아본 것을 기준으로 설명을 한다면,

1. Regshot 실행 -> 윈도우 탐색기 실행 -> 폴더 옵션으로 진입 -> 첫째 저장 -> 설정 변경 -> 둘째 저장
2. Regshot 실행 -> 첫째 저장 -> 윈도우 탐색기 실행 -> 폴더 옵션으로 진입 -> 설정 변경 -> 둘째 저장

쉽게 1 과 같은 식으로 작업하시는 것이 좋습니다. 2 와 같은 식으로 작업하면 별다른 영향이 없는 경우도 있지만, 그 사이에 껴든 [윈도우 탐색기 실행 -> 폴더 옵션으로 진입] 에 해당하는 레지스트리가 변경되는 경우도 많고, 그래서 실제로 꼭 필요한 정보 외에 전혀 관련이 없는 다른 정보들이 함께 추적되는 경우도 많기 때문입니다.

그 외에 백그라운드로 실행 중인 프로그램들도 영향을 미칠 수 있기 때문에 가급적 백신과 같은 백그라운드로 실행 중인 프로그램들도 꺼두시는 게 보다 깔끔한 비교를 위해서 좋습니다.


백업 블로그에서 소개해드린 프로그램이지만 얼마 전 윈도우의 설정과 관련된 레지스트리를 수집하는 것에 대해서 이야기가 나온 김에 전체적으로 다시 정리를 해보았습니다. 뭐 그렇습니다. 정리하자면 레지스트리 변경 추적 작업은 추적 결과를 윈도우에 대한 지식을 토대로 센스를 발휘하여 분석하는 작업이라고 할 수 있겠네요. 작업은 매우 간단하지만 어쩔 땐 꽤 많은 지식이 필요하기도 하고 그렇습니다. 아무튼, 이런 식으로 윈도우의 설정이나 정책에 대한 레지스트리 키들을 모을 수 있고, 이게 쌓이면 자신만의 정보가 되겠죠? 이번 글은 여기까지 입니다. ^^