Computer >> 컴퓨터 >  >> 시스템 >> Windows

Windows IFEO 레지스트리 활용법: 성가신 GWX(Windows 10 업그레이드 알림) 우아하게 차단하기

이 글은 다소 복잡한 스토리라인을 담고 있으니 끝까지 함께해 주시기 바랍니다. Microsoft 제품에 정통한 익명의 소스로부터 매우 흥미로운 정보가 담긴 이메일을 받았는데요. 바로 Image File Execution Options(IFEO)와 Windows 디버거가 지닌 특별한 '닌자 능력'을 활용하는 방법입니다. 그 목적이 무엇이냐고요? 바로 그 악명 높은 GWX 때문입니다.

제가 예전에 WMIC에 대해 다룬 글과 비슷한 맥락으로, 오래전부터 Windows에 존재해 왔지만 놓치기 쉬운 초강력 기능을 하나 더 소개해 드리겠습니다. 프로그램이 제멋대로 작동하려 할 때에도 IFEO를 활용하면 운영체제를 여러분 마음대로 다룰 수 있습니다.

배경 이야기

Windows에는 Image File Execution Options라는 훌륭한 기능이 내장되어 있습니다. 새로운 기능은 아닙니다. 적어도 2000년대 초반, 어쩌면 그 이전부터 존재해 온 기능이죠. 레지스트리 키로 구현되는 IFEO는 개발, 문제 해결, 디버깅 등의 목적으로 프로그램을 일종의 '디버그 옵션'과 함께 실행할 수 있게 해 줍니다.

"이미 해당 실행 파일에 플래그, 스위치, 옵션이 있는데 굳이 이게 필요한가?"라고 생각하실 수 있습니다. 하지만 컴파일된 프로그램이 제공하지 않는 기능을 사용하고 싶다면 어떻게 하시겠습니까? 이해하기 조금 어려울 수 있으니 예제를 통해 살펴보겠습니다. 시작하기 전에 소중한 데이터는 반드시 백업하세요!

메모장(notepad.exe)과 IrfanView(i_view32.exe), 이 두 가지 평범한 프로그램을 예로 들어 보겠습니다. 하나는 텍스트 편집기이고, 다른 하나는 이미지 뷰어입니다. 레지스트리의 IFEO 아래에 메모장 항목을 만들고, IrfanView를 호출하는 Debugger 키를 설정해 보겠습니다. regedit를 실행한 후 다음 경로로 이동합니다.

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\
Image File Execution Options

왼쪽 창에 수많은 프로그램 목록이 보이며, 일부는 낯익은 이름일 것입니다. 새 키를 만들고 notepad.exe라고 이름을 붙입니다. 이것은 연습용이며 나중에 삭제할 것입니다. notepad.exe를 선택한 상태에서 오른쪽 창에 새 값을 만듭니다. 이름은 Debugger로 하고, 일반 문자열(REG_SZ) 타입이어야 합니다. 그런 다음 데이터를 편집하여 i_view32.exe를 입력합니다. 최종 결과는 아래 스크린샷과 같은 모습이 됩니다.

실제로 이렇게 설정하면 메모장이 실행되는 대신 IrfanView로 넘어가게 됩니다. 논리적으로는 전혀 말이 안 되지만, 프로그램의 실행을 가로채 다른 곳으로 돌릴 수 있다는 점에서 의미가 있습니다.

GWX의 등장

그 성가신 Windows 10 업그레이드 알림 팝업, 기억하시나요? 이것을 원하지 않는다면 몇 가지 선택지가 있습니다. 해당 KB 업데이트를 제거하거나, 제가 이전 가이드에서 보여 드렸던 것처럼 실행 자체를 무력화하거나, 또는 Debugger 방식을 활용할 수 있습니다. 관리자 권한 명령 프롬프트(레지스트리 쓰기 권한이 필요하므로)에서 다음과 같이 입력해 보세요.

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows NT\CurrentVersion\Image File Execution Options\gwx.exe"
/v Debugger
/t REG_SZ
/d "C:\windows\system32\cmd.exe /c exit 0"

여기서 무슨 일이 일어나는 걸까요? 다음 위치 아래에 gwx.exe라는 새 레지스트리 키를 추가하는 것입니다.

HKLM\SOFTWARE\Microsoft\<...>\Image File Execution Options\

이렇게 하면 GWX.EXE라는 이름의 모든 실행 파일이 이 방식으로 가로채집니다. 그런 다음 일반 문자열 타입의 Debugger 값을 생성하고, 그 데이터를 '실행 후 종료 코드 0으로 즉시 종료'하는 Windows CMD로 설정합니다. 프로그래밍 세계에서 종료 코드 0은 모든 것이 정상임을 의미합니다.

다시 말해, 어떤 gwx.exe 실행 파일이든 시작되면 명령 줄(셸)만 실행한 뒤 아무 작업 없이 종료됩니다. 이것은 순수한 디버깅 기법이라 할 수 있으며, IFEO를 어떻게 설정할지, 어떤 실행 파일을 소스와 대상으로 사용할지에 대한 제약은 전혀 없습니다. 실질적으로 GWX는 단순히 셸을 띄웠다가 즉시 종료되는 무능한 빈 껍데기로 전락하고 맙니다.

IFEO를 활용하면 GWX 제거 가이드에서 언급했던 파일 소유권 및 권한 문제도 손쉽게 우회할 수 있습니다. 마지막으로 강조하자면, 이것은 극도로 강력한 기능이며 잘못 사용하면 Windows를 깔끔하게 벽돌로 만들어 버릴 수 있습니다. 미리 경고해 드립니다!

추가 참고 자료

이 주제에 관해 유용한 글들을 소개합니다.

Junfeng Zhang의 Image File Execution Options

Mithun Shanbhag의 Image File Execution Options

An Introduction to Image File Execution Options

Beware the Image File Execution Options Key

결론

Microsoft가 때때로 일을 처리하는 방식에는 나름의 아름다움이 있습니다. 디버거 쪽, 즉 삶의 '다크 사이드'에 부여한 자유와 힘은 정말 인상적입니다. 하지만 어떤 도구든 큰 혼란을 일으키는 데 쓰일 수도, 좋은 일에 쓰일 수도 있습니다. 우리의 경우는 단지 Windows 10 업그레이드 알림을 제거하는 간단하고 우아한 방법을 원할 뿐입니다. 이 방법을 사용하면 최소한의 번거로움으로 그 목표를 달성할 수 있습니다.

물론 이것은 완전한 해결책이라기보다는 임시방편에 가깝습니다. 새로운 GWX 유사 프로세스가 등장하면 이런 식으로 가로채지 않을 수 있습니다. 관련 파일과 예약된 작업도 그대로 남아 있기 때문에, 시스템에서 완전히 제거한다기보다는 문제를 인정하고 무력화하는 데 가까운 접근입니다. 그럼에도 불구하고 이 방법은 자유와 유연성이라는 완전히 새로운 세계를 열어 줍니다. 언제나처럼 시스템 이미징과 백업을 강력히 권장하며, 레지스트리와 그 영향을 완전히 이해하고 확신이 설 때만 수정하시기 바랍니다. 오늘 정말 가치 있고 유용한 내용을 배워 가셨기를 바랍니다. 즐거운 인터넷 생활 되세요.

감사합니다.