컴퓨터와 잡동사니 자료

어느날 윈도우10에서 익스플로러와 엣지 둘 다 실행이 안됐다. 그래서 난...

K66Google 2019. 11. 24. 19:11

윈도우10은 참으로 '애증의 운영체제'다.
윈도우7과 8.1 쓰던 시절에는 상상조차 하지 못했던 기상천외한 문제들이 발생하고 있는 것 같다. 
이게 기분 탓인지, 아니면 정말로 운영체제에 버그가 많은 건지는 나도 모른다.
아무튼, 오늘은 'Internet Explorer 11'과 'Microsoft Edge'에서 벌어진 문제에 대해 말해보도록 하겠다.

며칠 전부터 익스플로러11과 마이크로소프트 엣지가 실행이 되지 않았다.

동영상처럼 익스플로러는 무응답, 엣지는 회색 화면만 뜨고 1~2초 후에 꺼지는 현상이 벌어지는 것이다.

보통 익스플로러만 실행이 안되거나, 엣지만 실행이 안되는데 내 경우는 양쪽 모두 실행되지 않았다.


그래서 난 이벤트 뷰어에 들어가보았다. (실행 창에서 eventvwr 라고 입력하면 들어갈 수 있다.)

거기서 오류 기록을 조사했더니 엣지가 무엇때문에 종료되었는지 파악할 수 있었다. iertutil.dll 이라는 모듈때문에 0xc0000409 오류가 발생하였다고 한다.


구글에 MicrosoftEdge.exe iertutil.dll 라고 검색해보니 여러 설명이 나오는데 대부분이 엣지 리셋이나 재설치와 관련된 설명이었다.


  • PowerShell을 켜서 Get-AppXPackage 어쩌구 명령어를 입력하는 방법.
  • 명령 프롬프트에서 DISM Cleanup 어쩌구 명령어와 sfc /scannow 명령어를 실행하는 방법.
  • 레지스트리 편집기로 Edge 관련 폴더의 사용 권한을 체크하는 방법.
  • AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe 폴더 안 내용을 삭제하는 방법.
  • C:\ProgramData\Microsoft\Windows\AppRepository\Packages 폴더 안의 엣지 폴더에서 ActivationStore.dat 파일이 있는지 확인하는 방법.
  • 프로그램 추가/제거에서 Internet Explorer 11 기능을 껐다가 키는 방법.
  • regsvr32 명령어로 dll을 등록하는 방법.

  • 거의 시도할 수 있는 모든 방법은 다 해봤는데 전혀 효과가 없었다. 그렇다면 혹시 최근의 업데이트가 문제를 일으킨 것은 아닐까?


    (출처 : https://support.microsoft.com/ko-kr/help/4524570/windows-10-update-kb4524570 )


    마침 최근에 설치된 업데이트가 있었다. 패치 설명에도 익스플로러와 엣지에 관해 언급을 하고 있어서 수상하기 짝이 없다. 이 녀석이 범인일 가능성이 높다. 당장 제거해버리자. 그런데...



    제거할 수가 없다.

    KB4524570 업데이트는 제거가 불가능한 업데이트인 모양이다. 그럼 윈도우를 다시 깔아야 한단 말인가? 

    아니 잠깐, 업데이트가 문제라면 업데이트 하기 전에는 문제가 발생하지 않았을 것이다. 이 업데이트는 11월 15일에 설치 성공이라고 했으니 11월 15일 이전에 엣지가 오류를 낸 기록이 있는지 찾아보자.


    시작 메뉴 옆의 검색 버튼으로 '안정성 기록 보기' 라고 검색하니까 '안정성 모니터' 라는 곳으로 들어갈 수 있었다.

    그리고 여기서 11월 13일에 엣지가 오류를 일으켰다는 정보를 얻을 수 있었다. (최초 오류)

    엣지는 11월 8일에 실행했던 기억이 있고, 익스플로러11은 우연히도 내가 13일에 스크린샷을 찍어놓았기 때문에 실행 확인이 되었다.


    업데이트 성공 날짜는 11월 16일 오전 8시경이라고 나와있다. 

    아마 15일 시스템 종료 시에 업데이트가 적용되었고 16일에 처음으로 윈도우에 진입했을때의 시간을 표시한 듯 하다.

    결국 KB4524570 업데이트와 엣지 실행 오류는 관련이 없었던 것이다.


    다시 원점으로 돌아왔다.

    포맷말고는 답이 없단 말인가?

    그래도 지푸라기라도 잡는 심정으로 검색을 계속했더니 이 문제에 관해 글을 쓴 중국어 블로그에 방문할 수 있었다.


    (출처 : https://crushonme.github.io/2019/07/11/Edge-Do-Not-Work-In-Windows10-After-In-Place-Upgrade/ )


    중국어 해석을 못해서 크롬 번역기를 사용하여 읽어보았는데, 내 사례하고 거의 일치하였다.

    엣지가 문제를 일으킨다는 점, 오류 DLL이 iertutil.dll 이라는 점, 오류 코드가 0xc0000409라는 점...

    어쩌면 저 글을 참고해서 내 문제도 해결할 수 있을지 모른다.


    일단 오류 덤프 파일을 만들어야 한다. 

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Error Reporting\LocalDumps 에 가서 새 폴더를 만들고 폴더명을 MicrosoftEdge.exe 라고 정한다.

    그리고 그 폴더 안에 확장 가능한 문자열 값(REG_EXPAND_SZ)을 추가해서 이름을 DumpFolder, 값은 C:\CrashDumps 라고 정하였다.


    이렇게 지정해놓고 엣지를 한 번 실행하니 C:\CrashDumps 폴더에 오류 덤프 파일(.dmp)이 생성되었다. 그런데 .dmp 파일은 어떻게 해야 열어볼 수 있을까?


    (출처 : https://docs.microsoft.com/ko-kr/windows-hardware/drivers/debugger/debugger-download-tools )


    보아하니 .dmp 파일을 보려면 WinDbg 라는 프로그램이 필요한 것 같다.

    윈도우10이라면 Windows 10 SDK'Debugging Tools for Windows' 기능을 설치하면 된다고 한다.



    SDK 설치파일을 받아서 Debugging Tools만 체크하고 설치하였다.



    설치하고 난 뒤 WinDbg를 실행하였다. (시작 메뉴 옆 검색창 - WinDbg 입력 - x86 버전 클릭) 

    실행 후 File - Open Crash Dump - dmp 파일 선택해서 dmp 파일을 불러왔다.

    중국 블로그처럼 똑같이 명령어를 입력하니까 (.exr -1 / kcL ) 뭔가 많은 내용이 출력되었는데 블로그에서 나온 내용과 똑같았다.

    내가 직면한 문제와 같은 상황이 맞는 것 같다.



    (출처 : https://docs.microsoft.com/en-us/sysinternals/downloads/procmon )


    이번에는 Process Monitor 라는 프로그램이 필요한가 보다. 출처에서 다운로드해서 설치하였다.

    실행하니까 카카오톡이 Themida 타령하면서 꺼진다. 이 프로그램이 리버싱 프로그램이라서 그런 모양이다.


    아무튼, 실행하면 무수히 많은 로그가 뜨는데 정신 없으므로 엣지와 관련된 파일만 뜨게 필터 설정을 해야 된다.

    메뉴의 Filter - Filter로 가서 Process Name + contains (혹은 is) 로 정하고 browser_broker.exe 라고 입력한 뒤 Include로 지정하고 Add 누른다. 그런 다음 Apply 하고 OK 누른다.

    (엣지 실행파일이 아닌 browser_broker를 지정하는 이유는 중국 블로그에 그렇게 나와있기 때문이다.)


    설정 후에 엣지를 실행하면 browser_broker도 실행되면서 프로세스 모니터에 로그가 쌓이기 시작한다.

    그런데...

    여기서부터는 중국 블로그와 내용이 달라졌다.

    블로그에서는 ClickShare라는 프로그램에 포함된 VDD2HookUmode.dll 라는 모듈이 문제를 일으킨 것으로 나와있는데, 나는 그 프로그램을 설치한 적이 없기 때문이다.

    ...이제 어떻게 하면 된단 말인가?


    ...이 방법으로 문제의 원인을 100% 찾을 수 있을 거라 생각하지는 않지만 그래도 시도해보기로 하였다.

    윈도우10 1903 버전 설치 이미지를 받아서 VMware 가상머신에 설치했다.

    설치를 마친 뒤에 익스플로러11과 엣지를 실행해보았다. 잘 실행이 된다.

    실행확인을 한 후에 남은 업데이트도 모두 다 설치하였다. 이로써 본 컴퓨터와 가상머신은 동일하게 업데이트를 수행한 것이 된다.

    업데이트 설치 완료 후에도 익스플로러11과 엣지를 실행해봤는데 잘 실행 되었다.


    업데이트 설치 후 실행 확인까지 완료했으면, 먼저 가상머신에서 백그라운드로 돌아가는 browser_broker를 강제종료한다.

    그런 다음 본 컴퓨터와 가상머신 양쪽에서 프로세스 모니터를 실행한다. 필터는 위에서 설명한대로 browser_broker만 뜨게 해놓는다.

    셋팅이 완료되었으면 양쪽 모두 엣지를 실행한다. 본 컴퓨터는 1~2초후 꺼지고 가상머신은 계속 켜져있는데 가상머신 쪽은 수동으로 엣지를 종료시킨다.

    엣지가 양쪽에서 모두 종료되었으면 이제 틀린그림찾기를 해야한다. 

    본 컴퓨터와 가상머신의 로그를 비교해가면서 다른 점을 찾아야 한다. 말 그대로 서울에서 김서방찾기다.


    문제 원인이 나왔으면 좋겠다는 마음으로 비교하면서 내려가고 있으니, 위화감이 느껴지는 명령줄을 발견했다.

    HKCR\CLSID\{A4A1A128-768F-41E0-BF75-E4FDDD701CBA}\TreatAs 라는 로그 다다음줄에 ieproxy.dll의 경로를 가지고 오는데 본 컴퓨터에서는 C:\Program Files\Internet Explorer\ieproxy.dll 이라는 경로로 지정되어 있었다.


    그러나 가상머신에서는 C:\Windows\System32\ieproxy.dll 이라는 경로로 지정되어 있었다.

    이러한 경로 불일치가 어쩌면 문제의 원인이 아닌가 하는 의심이 들기 시작하였다.


    본 컴퓨터의 browser_broker는 ieproxy.dll 관련 로그 이후에 얼마 못 가서 프로세스가 종료됐다가(Process Exit) 다시 시작하는(Process Start) 모습을 보여주고 있다. 의심이 더욱 들 수 밖에 없는 대목이다.

    아무래도 ieproxy.dll 로그 이전에 떴던 레지스트리 주소로 가 볼 필요가 있는 것 같다.


    본 컴퓨터의 프로세스 모니터를 닫고, 레지스트리 편집기를 실행해서 다음 주소로 이동했다.


    HKCR\CLSID\{A4A1A128-768F-41E0-BF75-E4FDDD701CBA}


    들어가니 TreatAs 폴더는 없지만 InProcServer32라는 폴더가 있었는데 그 폴더의 기본값ieproxy.dll의 파일 경로가 입력되어 있는 걸 발견할 수 있었다.


    (출처 : https://www.winpcware.com/extension/dll/ieproxy-dll )


    ieproxy.dll은 윈도우8.1까지만 해도 익스플로러 폴더에 있었지만, 윈도우10 부터는 System32 폴더에 들어간 모양이다.

    무슨 이유인지는 알 수 없지만 레지스트리에서 ieproxy.dll 경로가 잘못 지정되면서 익스플로러11과 엣지가 실행되지 않았던 것이다.


    그렇다면, HKCR\CLSID\{A4A1A128-768F-41E0-BF75-E4FDDD701CBA}\InProcServer32 의 기본값을 C:\Windows\System32\ieproxy.dll 로 올바르게 지정해주면 어떻게 될까?



    결과는 동영상과 같다.

    열흘동안 끙끙 앓던 문제가 한 순간에 풀렸다.

    인터넷 상의 대증요법이 통하지 않으면 잘 되는 환경과 비교하고 대조하는 게 답이었나보다.



    이제 정리 작업만 남았다. 프로세스 모니터를 한번 실행하게 되면 카카오톡이 Themida 타령하면서 실행되지 않는 걸 해결해야 한다.


    레지스트리 편집기를 열고 HKEY_CURRENT_USER\Software\Sysinternals\Process Monitor로 이동한 다음 Process Monitor를 폴더째로 삭제한다.

    그런 다음 재부팅하면 카카오톡이 다시 실행될 것이다.


    자, 이것으로 윈도우10의 익스플로러11과 엣지 미실행 문제의 해결 과정 서술을 마친다.

    그럼 이만...