레지스트리

프로그램을 설치하면 레지스트리에 어떻게 저장될까..

sungtg 2008. 4. 21. 13:27

프로그램이 설치 되면서 레지스트리에 어디에 등록이 되냐면

HKEY_LOCAL_MACHINE\SOFTWARE에 
프로그램이름이나 개발회사 이름으로 폴더를 만듭니다.
인스톨 정보에 맞춰서 하위 폴더에 필요한 셋팅을 한 다음

사용자 삽입 이미지

레지스트리의 자동실행되는 부분에 설정하고HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

사용자 삽입 이미지

삭제할 부분 제어판의 uninstall 부분에 설정합니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall


사용자 삽입 이미지

프로그램이 사용하는 확장자 있을 경우에는 확장등록을 합니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Classes   .hwp로 등록을 합니다.

사용자 삽입 이미지

중요한 부분인데 한글 실행파일 hwp.exe에서 사용하는 dll파일들의 클래스를 등록시킵니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID


사용자 삽입 이미지

아래 부터는 프로그램이 설치가 잘 된 후의
백업하는 레지스트리의 키값 이고
HKEY_CURRENT_USER\Software 하위에 프로그램의 환경설정이 들어가 게됩니다.
화면설정, 히스토리, 프린트설정등
프로그램을 실행시켜서, 옵션메뉴에서 설정을 바꾼 경우 여기에 저장된다고 생각하면 됩니다
.

사용자 삽입 이미지

이제는 삭제를 자유롭게 할 수 있겠지요.

조심할 것은 CLSID 부분입니다.

윈도우용 프로그램들은 커널이라는 메모리 체계입니다.
주메모리와 디스크의 가상메모리 영역을 사용하게 되는데...

주메모리영역에서는 실행파일들을 주로 돌리고, DLL 파일들은 커널영역 디스크 영역도 포함된
메모리 영역내에서 작동이 됩니다.
svchost.exe rundll32.exe 등이 대표적인 dll파일을 구동시키는 파일인데..
문제는 커널의 리소스가 부족하거나, 디스크의 상태가 좋지 않으면 제대로 레지스트리의 정보를
읽어 올 수 없어서 dll 에러를 발생시킵니다.
dll파일의 에러 종류도 참 많지요..

프로그램을 설치를 할 때,
설치 중간 쯤에 이런 작업을 하게 되므로 프로그램을 설치 할때는 프로그램을 사용하지 말라고
하는 것이 바로 이런 이유 때문입니다.

사실 레지스트리 정리 프로그램의 가장 큰 부분이 여기를 정리하는 것입니다.
나머지 부분은 레지스트리에 정보가 있으나 없으나 별 상관이 없습니다.

문제는 DLL 파일들의 클래스 부분이 프로그램을 많이 설치했을 때,
얽혀 버리면  무조건 포맷하고 다시 설치를 하는것이 좋습니다.

역시 사용자가 무심코 삭제를 한다면 그것 역시 프로그램의 작동을 멈추게 만듭니다.
조심하고 이 부분을 지울때는 아시는 분한테 물어보고 하세요
멀쩡한 윈도우 다시 설치해야 되는 불상사가 생길게 됩니다.

이런 프로그램이 설치되는 메카니즘은 어떤 윈도우 버전이든 계속 이런 구조로 갈겁니다.

과거 도스시절에는 유닉스에서 썼던 환경파일 기법을 사용해서
해당 파일의 PATH만 맞춰 주면 됬지만..
윈도우95부터 레지스트리가 나오면서 없어진 것입니다.