제공: 한빛 네트워크
저자: Mitch Tulloch, 최상규 역
원문: How to Remove Startup Programs
윈도우 계열 PC를 쓰다보면, 점점 부팅이 느려지게 된다. 이것은 시간이 지남에 따라 많은 응용프로그램이 설치되는 경우가 많기 때문이다. 설치되는 응용프로그램들은 매장에서 구입한 패키지 소프트웨어이거나 인터넷을 통해 다운로드한 평가판 프로그램들이 대부분일것이다. 문제는 많은 프로그램 혹은 서비스들이 윈도우 부팅 시마다 자동으로 시작된다는 것이다. 그래서 조금 지나면, 윈도우 시작 시 눈에 보이지 않는 백그라운드로 많은 프로그램들이 수행된다는 것을 의미한다. 당신의 컴퓨터가 충분한 메모리를 가지고 있다면 심한 부팅딜레이를 겪지 않을수도 있다. 물론 몇몇 프로그램은-안티바이러스나 써드파티 파이어월같은 프로그램- 윈도우 시작시 자동수행되도록 되어있다. 그러나 많은 응용프로그램, 서비스들은 필요하지 않은 경우에도 윈도우 부팅시 시작되는데, 바로 이런것들이 찾아내서 없애고 싶은 원인들이다.
물론 온라인이나 컴퓨터 매장을 통해 "이미 모두 설치된" 컴퓨터를 구입했다면, 매일 부팅이 느려지는 것을 경험하게 될 것이다. 이런 이유로 PC제조사들은 자신의 제품에 시스템 관리툴, CD 레코딩 유틸리티, 그림그리기 프로그램, 사진 편집 프로그램 등등 당신이 한번도 쓰지않을 수많은 프로그램들을 설치하려는 경향이 있다. 일반 사용자들이 새로 설치한 XP PC와 "이미 모두 설치된" PC를 비교해보면 차이를 발견할 수 있다. 와우 - "스타트" 버튼을 눌러 바로 "Add or Remove Program" 메뉴로 가서 "Remove", "Remove", "Remove"를 해보라. 불행하게도 이런 프로그램들은 여전히 윈도우 부팅시마다 시작되는 프로그램이나 서비스가 남아있을 수 있다. 이런 프로그램은 어디에 숨어있는가?
시작 프로그램 찾기
윈도우 부팅시마다 시작하는 프로그램, 서비스들은 여러 방법으로 실행된다. 가장 간단한 방법은 프로그램 설치시에 현재 사용자(또는 PC의 개별 사용자 계정마다)의 "시작 폴더"에 shortcut을 생성하는 방법이다. 당신의 "시작 폴더"를 열기위해, "Start"버튼, "Run"을 클릭하여 다음과 같이 입력해보라.
%userprofile%\Start Menu\Programs\Startup
PC내의 모든 사용자에게 공용인 "시작 폴더"는 다음 경로에서 찾을 수 있다.
%allusersprofile%\Start Menu\Programs\Startup
내가 주로 사용하는 XP PC에서 두 경로를 열었을 때 "시작 폴더"는 비어있었지만, "공통 시작 폴더"에는 PC에 연결된 UPS 장비 제조사의 파워 모니터링 프로그램의 shortcut이 있었다. 어떤 사용자가 로그인하더라도 "공통 시작 폴더"내의 shortcut이 있는 프로그램은 자동으로 실행된다는 것을 기억하라. 만약 이 shortcut을 삭제한다면 UPS는 목적한대로 동작하지 않을 것이다. 이건 그대로 두는것이 낫다.
레지스트리 키는 부팅 시 프로그램, 서비스들을 실행하는 또다른 보편적인 방법이다. 여기 시작 시 어떤 프로그램들이 자동으로 실행되는지 살펴볼 몇가지 레지스트리 키들이 있다.
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
이 키값들은 사용자가 PC를 켤때마다 시작되는 프로그램들이다. 단지 이 키를 체크해서 무려 12개(!)의 프로그램 목록을 찾았다. 때로는 이런 프로그램들이 속임수로 작동할 수 있다고 생각해보라. "DVDLauncher"라는 이름의 값은 그냥 그 제목대로일 것 같지만, "igfxpers"라는 이름의 값은 어떤가? 이런 값들에 대하여 알아보는 좋은 방법은, "igfxpers.exe"는 "NVidia 그래픽카드가 제공하는 부가적인 설정 옵션을 설치하면서 같이 설치되는 프로세스이며 이 프로그램은 필수불가결한 프로그램은 아니지만, 문제를 일으킬 소지가 있기에 중지되어선 않됨! 이라는 설명을 찾을 수 있는 "ProcessLibrary.com" 웹사이트에서 찾아보는 것이다.
또 다른 레지스트리 키는 다음과 같다.
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
이것은 바로 전 레지스트리 값과 유사하지만, 여기 나열된 프로그램 값의 의미하는 차이점(HKLM 대신 HKCU)은 단지 모든 사용자가 아닌, 현재 사용자(나)에 대해서만 실행될 것이라는 것이다. 나는 여기서 단지 윈도우 메신저(내가 윈도우 시작때마다 실행되기를 원하는)와 ProcessLibrary.com에서 마이크로소프트 오피스 언어바를 실행하는 것이라고 나와있는 ctfmon.exe등 2개의 프로그램만 발견하였다. 오피스의 이런 기능을 사용하지 않기때문에 이 레지스트리 값을 지우려고 하는 것보단, 내 PC에서 이런 기능들을 제거하기 위하여 마이크로소프트 오피스 셋업을 다시 실행하여 제거하는 것이 더 낳은 방법이다. 마이크로소프트 지식 기반(Knowledge Base)에 자세한 내용이 있다.
앞에 언급한 키와 더욱 비슷한 것이 이것이다.
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run
이 키는 내 PC에 없으므로 여기서 고려할 것이 없다.
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows
여기서 나오는 값들의 조사해보라. 왜냐하면 이 값을 가지고 있는 프로그램은 어떤 사용자가 당신의 PC에 로그인할 때 실행될 것이기 때문이다.
여기 4부분은 필요할 때 한번만 실행되는 프로그램들을 찾을 수 있는 곳이다.
HKLM\Software\Mircrosoft\CurrentVersion\RunOnce
HKLM\Software\Microsoft\CurrentVersion\RunOnceEx
HKCU\Software\Microsoft\CurrentVersion\RunOnce
HKCU\Software\Microsoft\CurrentVersion\RunOnceEx
내 PC는 위의 2개의 키만 가지고 있는데, 이 키들은 "Default" 값외에 다른 값을 가지고 있지 않다. 이것은 말이 된다. 왜냐하면 여기 있는 프로그램들이 실행되고 나면 관련된 레지스트리 값이 지워지기 때문이다. 이런 키에 대한 더 많은 정보는
여기,
여기,
여기에서 찾을 수 있다.
여기 조사할 키가 하나 더 있다.
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
이 키 내에 많은 값이 있다. 각각 기본 윈도우 쉘과 사용자 쉘을 지정하는 "Shell", "Userinit"의 두가지 흥미로운 값이 있다. 유해한 스파이웨어는 이런 값들을 다른 값으로 바꾸어 놓을 수 있는데, 한 가지 예를 들면 다음과 같다. 당신이 PC에 로그인하는 즉시 바로 튕겨나고, 로그인 박스가 다시 나타나는 경우이다. MVP인 Nirmal Sharma는 이 이슈와 관련하여 원격으로 손상된 PC의 레지스트리에 접근하여 고칠 수 있는 방법에 관한 글을
Community Solutions KB article에 썼다. Community Solutions article은 MS의 PSS팀이 아닌 MVP 커뮤니티의 멤버가 작성하는 KB article이다. 이 문서들은 MS에 의해 제공되지는 않지만, 때론 더욱 도움이 된다. 더 많은 커뮤니티 해결 문서를 찾기 위해선, support.microsoft.com 사이트에서 제한적으로 찾기보단, "Community Solutions Content Disclaimer"란 단어로 "구글링"(이런,
구글을 이용하여 찾기) 해보길 바란다.
당신의 PC가 도메인에 속해 있다면, network administrator는 당신 PC에 시작프로그램을 추가할 수 있다. 이 정책은 여기서 찾을 수 있다.
- Computer Configuration\Administrative Templates\System\Logon
- User Configuration\Administrative Templates\System\Logon
관련된 세가지 정책은 각각 두군데에서 찾을 수 있다.
- 사용자 로그인 시 이 프로그램들을 실행. 여기 나열된 프로그램들과 당신 PC의 레지스트리에 있는 어떤 시작 프로그램도 명백하게 매번 윈도우 시작시 실행된다.
- Run Once 목록을 수행하지 말라. 만약 administrator가 이 정책을 사용한다면, RunOnce 레지스트리에 있는 어떤 프로그램도 윈도우 시작시 실행되지 않을 것이다. 이 정책을 사용하는 것은 malware(위험한 프로그램)이 PC에서 실행되는 것을 막는데 도움을 주는 좋은 방법이다.
- 기존 Run List를 수행하지 말라. 만약 administrator가 이 정책을 사용한다면, 윈도우 시작시 Run 레지스트리에 있는 어떤 프로그램도 실행되지 않을 것이다. 이 정책을 사용하는 것은 malware(위험한 프로그램)이 PC에서 실행되는 것을 막는데 도움을 주는 좋은 방법이다.
일반 사용자도 administrator 권한을 가진 계정으로 로그인하면 이런 정책들을 수동으로 설정할 수 있다. 방법은 : "Start", "Run"에서 "gpedit.msc"를 입력하여 실행한다. 이 명령은 그룹 정책 편집기를 실행하여 로컬 컴퓨터 정책을 편집할 수 있게 한다. 위에 설명된 적절한 곳으로 이동하여 원하는 각각의 정책을 편집한다. 주의할 것은 당신의 PC가 "이미 모두 설치된" 상태에서 Run 목록을 비활성화한다면 몇몇 프로그램은 제대로 실행되지 않을 수 있다. 이런 정책들은 네트워크를 통한 워크스테이션에 적용하도록 하라.
당신 레지스트리의 특정한 영역에 있는 프로그램의 목록인 "Run These Programs At User Logon"과 같은 정책을 수정할 부분은 다음과 같다.
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
유해한 프로그램은 심지어 그룹 정책이 네트워크에서 사용되지 않는 경우라도 이런 레지스트리 키값을 변경했을 수도 있다.
시작 프로그램들이 때때는 건드리는 또다른 레지스트리 키이다.
HKLM\Software\Microsoft\Windows\CurrentVersions\ShellServiceObject\DelayLoad
이 값이 가르키는 DLL은 시작 시 윈도우 쉘에 특별한 능력을 더하기 위해 로딩되는 것들이다. 만약 여기 "CDBurn", "PostBootReminder", "SysTray" 그리고 "WebCheck"가 있다면, 당신PC에는 유해한 malware가 존재하는 것이다.
도메인에 가입된 PC에서 시작프로그램이 실행될 수 있는 또 다른 방법은 PC부팅시나 로그인시, 시작 또는 로그인 스크립트가 동작하는 것이다. 관심이 있다면 네크워크 관리자에게 물어보도록 하라. 일반 가정사용자들은 이 문제에 관해 고려할 필요는 없다. 그리고 매번 PC부팅시마다 유저별로 스케쥴된 작업을 가능하게 해주는 스케쥴 작업 폴더가 있다. 이 스케쥴된 작업은 오직 administrator 계정의 스케쥴 작업 폴더에만 있다. 일반 사용자는 또한 매번 PC에 로그인 할때마다 스케쥴 작업을 실행할 수 있는데, 일반적으로 이 작업들은 백그라운드에서 실행된다.
시작 프로그램 다루기
위에 언급한 절차를 이용해 수동으로 시작프로그램을 찾는 것과 더불어 System Configuration 유틸리티("Start", "Run" 클릭하여 "msconfig.exe"을 입력 후 실행하여 Startup 탭을 선택) 또는 SysInternals의 "
Autoruns"과 같은 서드파티 툴을 이용할 수도 있다. 일단 모든 불필요한 것들을 찾고나면 어떻게 제거할 것인가?
시작폴더(또는 공통 시작폴더)에서 항목을 삭제하는 것은 일반적으로 안전하지만, 레지스트리 값을 지우는 것은 마지막 수단으로 고려해야 한다. 사실 레지스트리 값을 지움으로써 동작하지 않을 수도 있지만, 시작 프로그램과 연관된 어플리케이션을 실행하자 마자 지워진 레지스트리 값은 자동적으로 재생성된다!
가장 좋은 방법은 윈도우 부팅시마다 실행되는 기능이나 컴포넌트를 제거할 수 있게 해주는 지는 찾아보는 것이다. 이런 기능을 찾아보기 위해 어플리케이션의 셋업 프로그램을 다시 실행시켜보는게 필요하다. 만약 제공하지 않는다면, 레지스트리 키값을 삭제할지 고려해봐야 한다.(그러나
레지스트리 값을 수정하기 전에 항상 백업하도록…)
다음번에 PC를 구입한다면, "이미 모두 설치된" PC를 구입하는 것보단, "조립만 된" 국산(또는 Geeks.com같은 매장의 중고) PC(OS로 설치않된)를 구입하는 것을 고려하도록 하라. 그리고 포장된 MS윈도우(최신 버전이면 어떤것이든)를 구입하도록 해서 직접 설치하도록 하라. 당신의 PC를 날라다니게 될 것이다. 부팅은 당신이 쓰던 PC보다 훨씬 빠를 것이다. 그리고나서 인터넷 쉐어웨어 사이트에서 이것저것 다 다운로드하여 설치하지말고, 꼭 필요한 어플리케이션만 설치하도록 하라. 이렇게 한다면, 뒤죽박죽인 PC와 구별되는 깨끗한 PC를 가질 수 있을 것이다.
마지막으로 시작 프로그램에 관한 몇가지 내용이 더 있다.
Mitch Tulloch는 Window 2000 administration in a Nutshell, Windows Server 2003 in a Nutshell 그리고 Windows Server Hacks의 저자이다.
역자 최상규님은 미래산업주식회사 SMT 연구개발팀 전임 연구원으로 SMT 장비제어 SW, 유저인터페이스 SW를 개발하고 있다.