웹진 액트온정보공유

시작프로그램과 그 친구들

By 2010/06/11 10월 25th, 2016 No Comments
레니

컴퓨터를 부팅하고 윈도가 시작되면 굳이 실행시키지 않아도 여러가지 프로그램들이 자동으로 뜨게 됩니다. 주로 사용하는 메신저나 컴퓨터 관리 프로그램들이 대표적인 예로서, 어떤 녀석들은 윈도 시작시에 실행되라고 지정해 놓은 것도 있지만, 또 어떤 녀석들은 따로 지정한 바도 없는데 그냥 지가 알아서 뜨는 경우도 있죠.

예를 들어, 메신저 같은 경우 윈도가 시작될 때 자동으로 프로그램을 실행시키는 옵션이 있어서, 이 옵션을 체크해 두면 일일히 수동으로 메신저를 실행시킬 필요가 없게 되죠.

그림:Messenger.jpg

만약 프로그램에 윈도 시작시 자동 실행 옵션이 없다고 하더라도 쉽게 시작프로그램으로 만들 수 있습니다. 프로그램 메뉴를 살펴보면 "시작프로그램"이라는 폴더가 있는데, 이 폴더 안에 있는 프로그램은 윈도가 시작될 때 자동으로 실행되도록 되어 있습니다. 따라서 이 폴더 안에 실행시키고자 하는 프로그램의 바로가기 링크를 끌어다 놓으면 쉽게 시작프로그램으로 만들 수 있죠.

그림:시작프로그램.jpg

근데 일반적으로 시작프로그램의 문제는 추가가 아니라 삭제에 있습니다. 컴퓨터에 뭔가 이상한 프로그램이 깔려 돌아가는 것 같은데, 내가 실행시킨 것이 아니라 자동으로 실행된 프로그램인 경우가 많이 있죠. 여기서 그 프로그램을 X라고 가정해 봅시다. 이 경우 앞에서 설명한 바와 같이,

1. 프로그램 자체에 윈도 시작시 자동 실행 옵션이 켜져 있는지 체크한다.
2. "시작프로그램" 폴더에 그 프로그램이 있는지 확인한다.

이 두 가지 방법을 사용해 볼 수 있겠습니다.

그런데 문제는 이 두 가지를 체크해도 X가 거기 없거나 무시하고 계속 자동실행될 수도 있다는 것입니다. 이는 윈도의 시작프로그램이 위치하는 곳이 두 군데 더 있기 때문이죠.

그 중 하나는 레지스트리Registry입니다. 레지스트리는 윈도에 특정 정보를 저장하기 위해 마련해 놓은 저장소입니다. 원래 컴퓨터란 전원을 끄는 순간 메모리의 모든 내용이 날아가버리기 때문에, 컴퓨터를 다시 켰을 때 이전의 정보를 남기기 위한 공간이 필요합니다. 이 공간을 윈도에서는 레지스트리라고 부르며, 계층적인 구조를 지니고 있어서 정보를 넣거나 꺼내기 편리합니다.

윈도는 처음 시작할 때 일단 레지스트리를 읽어들여 미리 저장되어 있던 정보를 다시 꺼내 옵니다. 이 중 시작프로그램과 관련된 정보가 있다면 그 정보를 바탕으로 자동으로 프로그램을 실행시키게 되죠. 대부분의 시작프로그램은 레지스트리에 들어가 있으며, 이 레지스트리만 잘 편집할 수 있으면 원하지 않는 시작프로그램 대부분을 제거할 수 있습니다.

레지스트리를 살펴보기 위해 레지스트리 편집기를 실행시킵니다. 윈도의 "실행" 메뉴를 사용하거나 "윈도키+R"을 누르면 실행창이 뜹니다. 여기에 regedit를 입력하고 엔터를 누르면 레지스트리 편집기가 실행됩니다.

그림:윈도실행메뉴.jpg

그림:레지스트리편집기.jpg

자, 레지스트리 편집기가 실행 되었습니다. 왼편의 메뉴는 레지스트리의 전체 구조를 나타내고 있으며, 오른편의 내용들은 선택한 레지스트리의 키Key와 값을 나타내 주고 있습니다. 일단 레지스트리는 폴더 같은 계층 구조를 이루고 있습니다. 폴더를 찾아가듯이 위에서 아래로 값을 찾아가면 원하는 값을 찾는데 그리 어렵지 않습니다.

윈도의 시작프로그램들은 다음 두 곳에 담겨 있습니다.

1. HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVersion > Run
2. HKEY_CURRENT_USER > SOFTWARE > Microsoft > Windows > CurrentVersion > Run

두 레지스트리의 구조는 최상위를 제외하곤 동일합니다. HKEY_LOCAL_MACHINE 아래의 내용은 컴퓨터의 모든 사용자에 적용되는 사항이고, HKEY_CURRENT_USER는 로그인한 아이디에 대해서만 적용되는 사항이라는 차이가 있습니다. 따라서 시작프로그램을 제거하려면 이 두 곳 모두를 뒤져 봐야 합니다.

이제 Run이라는 폴더를 클릭하면 오른편에 폴더 안의 내용이 표시될 것입니다. 여기 나오는 프로그램들이 바로 시작프로그램을 구성하고 있는 것이죠.

그림:레지스트리의시작프로그램들.jpg

레지스트리의 값들은 이름/종류/데이터로 구분되어 있습니다. 여기서 주의깊게 봐야 할 것은 이름과 데이터입니다. 이름은 그 프로그램이 등록될 때 사용한 고유값으로서 이름을 통해 이 프로그램이 어떤 프로그램인지 짐작하는데 도움을 줍니다. 데이터 항목에 들어 있는 값은 프로그램의 파일에 대한 정보입니다. 실제로 아까의 실행 메뉴에서 이와 똑같이 입력해 엔터를 누르면 아마 해당 프로그램이 실행될 것입니다.

여기서 X가 어떤 프로그램인지 찾아서 지워야 합니다. X의 파일 이름을 알아낼 수 있다면 가장 좋긴 한데, 그것이 어렵다면 가장 수상해 보이는 파일을 지워보는 수밖에 없죠-_- 삭제는 수상한 파일을 클릭하고 Del 키를 누르면 한 번 확인후 삭제하게 됩니다. 하지만 여기서 일단 Windows 폴더(C:Windows 또는 C:WinNT)에 있는 파일은 삭제에 신중해야 합니다. 악성코드가 Windows 폴더 안에 들어가 있을 수도 있겠지만, 대부분은 시스템 파일인 경우가 많기 때문에 잘못 지우면 윈도가 안돌아가는 불상사가 발생할 수도 있기 때문이죠. 게다가 레지스트리를 한 번 삭제하고 나면 다시 원상 복구 시키기가 쉽지 않습니다. 그래서 일단 삭제 전에 삭제할 내용을 다른 곳에 복사해 놓고, 만약 삭제해서 안될 값을 삭제하였다면 다시 레지스트리에 추가시켜 불상사를 막을 수 있도록 해야 안전할 것입니다.

이 방법을 통해 X를 지울 수 있었다면 매우 다행이지만, 어떤 프로그램들은 서비스Service 형태로 실행되기도 합니다. 이 내용은 글이 길어져서 다음 회로 넘기도록 하겠습니다 크크.

레지스트리를 자주 보다 보면 시스템에서 필요한 파일과 필요없는 파일을 대략 구별할 수 있습니다. 가끔 쓸데없이 레지스트리에 등록되어 있는 프로그램이 있다면 제거해 줌으로써 윈도 시작 속도도 향상시키고 가끔은 악성코드도 제거할 수 있습니다. 하지만 다시 한 번 강조되어야 할 것은, 잘못된 레지스트리 삭제는 최악의 경우 윈도를 못쓰게 할 수도 있다는 점입니다. 중요한 데이터가 있다면 충분히 백업을 받은 다음 경건한 마음으로 레지스트리 정리에 도전해 보는 것이 어떨까요? 🙂

 

2008-08-28