블루스크린

DLL·런타임 오류

드라이버 문제

게임 오류

윈도우 오류

프로그램 오류

광고자리 · 글 위

0xc000012f 잘못된 이미지 오류 원인 4가지와 증상별 해결 순서 (윈도우 11·10)

이 글을 3줄로 요약하면

· 0xc000012f의 정식 이름은 STATUS_INVALID_IMAGE_NOT_MZ이고, 뜻은 "그 파일 맨 앞에 있어야 할 MZ 표시가 없다"입니다. 서명 불일치를 뜻하는 0xC0000428과는 다른 번호입니다.

· 즉 파일이 통째로 잘렸거나 내용이 실행 파일이 아닌 것으로 바뀐 상태입니다. 그래서 "왜 잘렸는가"를 찾는 것이 이 오류의 전부입니다.

· 창에 뜬 파일 이름이 프로그램 자체인지, 공용 런타임인지에 따라 갈래가 갈립니다. 판별표에서 자기 증상을 찾고 그 섹션만 처리하면 됩니다.

0xc000012f는 정확히 무슨 뜻인가

이 번호는 "왜 못 여는가"까지 이미 말해 주고 있습니다.

화면에는 보통 프로그램 이름 뒤에 "잘못된 이미지"가 붙은 제목의 창이 뜨고, 본문에 "응용 프로그램을 올바르게 시작하지 못했습니다(0xc000012f)" 또는 "Bad Image"와 함께 어떤 파일 경로가 적혀 있습니다.

마이크로소프트의 NTSTATUS 값 목록에서 0xC000012F는 STATUS_INVALID_IMAGE_NOT_MZ이며, 설명은 "지정한 이미지 파일의 형식이 올바르지 않습니다. 앞부분에 MZ가 없습니다"입니다.

MZ는 모든 윈도우 실행 파일과 DLL의 맨 앞 두 글자입니다. 이 두 글자가 없다는 것은 파일이 조금 상한 정도가 아니라, 실행 파일의 형태 자체를 잃었다는 뜻입니다.

파일이 중간에 잘려서 0바이트에 가깝거나, 내용이 다른 것으로 덮였거나, 애초에 실행 파일이 아닌 것(예: 오류 안내 HTML)이 그 이름으로 저장돼 있을 때 이 상태가 됩니다.

서명이 안 맞는다는 설명은 다른 번호의 것입니다

해시·서명이 카탈로그와 맞지 않는다는 뜻의 STATUS_INVALID_IMAGE_HASH는 0xC0000428입니다. 0xc000012f와 자주 섞여 설명되는데, 두 번호는 조치가 다릅니다. 0xc000012f는 서명 문제가 아니라 파일 내용이 없어졌거나 깨진 문제이므로 "그 파일을 온전한 것으로 되돌리는" 쪽으로 갑니다.

코드 내부 이름과 뜻 첫 조치
0xc000012f STATUS_INVALID_IMAGE_NOT_MZ · 앞부분에 MZ가 없음 그 파일을 온전한 것으로 교체
0xC0000428 STATUS_INVALID_IMAGE_HASH · 카탈로그에서 해시를 찾을 수 없음 서명·업데이트 상태 확인
0xc000007b STATUS_INVALID_IMAGE_FORMAT · 이 윈도우에서 실행하도록 만들어지지 않음 32비트·64비트 짝 맞추기
0xc0000020 STATUS_INVALID_FILE_FOR_SECTION · 매핑 파일 속성을 읽을 수 없음 저장장치·파일 상태 점검

그래서 이 오류는 "어느 파일이 깨졌는가"만 알면 조치가 거의 자동으로 정해집니다. 창에 나온 파일 경로가 이 글의 출발점입니다.

같이 나오는 오류입니다 0xc000007b 오류 원인과 해결 순서 같은 "잘못된 이미지" 창이지만 파일 형식이 맞지 않는 쪽의 갈래입니다 · 눌러서 확인하기 →

증상으로 원인 좁히기

창에 적힌 파일 이름과 "언제부터인가"만 알면 갈래가 정해집니다.

아래 표에서 자기 상황과 가장 가까운 줄을 찾고, 그 줄이 가리키는 섹션부터 봅니다. 재설치를 반복하는 것이 이 오류에서 가장 흔한 헛수고입니다.

증상 유력한 원인 먼저 볼 항목
특정 프로그램 하나만 안 켜지고, 창의 경로가 그 프로그램 폴더 안이다 설치 중 또는 다운로드 중 파일이 잘림 원인 A → 새로 받아 재설치
창의 경로가 System32 또는 SysWOW64이고 이름이 msvcp·vcruntime으로 시작한다 Visual C++ 재배포 패키지 손상 원인 B → 복구 설치
부팅할 때마다 여러 프로그램에서 같은 창이 줄줄이 뜬다 공용 런타임 또는 시스템 파일 손상 원인 B → 원인 D 순서
백신 알림이 뜬 직후부터, 혹은 검사를 돌린 다음 날부터 시작됐다 정상 파일이 격리·삭제됨 원인 C → 보호 기록 확인
출처가 불분명한 파일을 실행한 뒤부터 여러 곳에서 뜬다 악성코드의 파일 변조 원인 C → 전체 검사
윈도우 업데이트나 강제 종료 직후부터 시작됐다 시스템 파일 손상 또는 업데이트 미완료 원인 D → sfc·DISM

창에 뜬 경로를 먼저 적어 둡니다

파일 이름이 창에 보이지 않고 빈 칸으로만 뜨는 경우도 있습니다. 그때는 7번 섹션의 이벤트 기록에서 파일 이름을 먼저 확보한 뒤 이 표로 돌아옵니다. 이름 없이 시작하면 어느 섹션으로 갈지 정할 수 없습니다.

원인 A그 파일이 온전한 실행 이미지가 아니다

창의 경로가 그 프로그램 폴더 안일 때 이 갈래입니다.

다운로드가 중간에 끊겼거나, 설치 중 저장장치 오류가 나거나, 압축을 덜 푼 채로 실행하면 파일 크기만 있고 내용이 비어 있는 상태가 만들어집니다. MZ 표시가 없는 파일이 되는 가장 흔한 경로입니다.

1그 파일이 실제로 어떤 상태인지 본다

창에 적힌 경로를 파일 탐색기 주소창에 붙여 넣고 그 파일을 찾습니다. 크기가 0KB이거나 같은 종류의 다른 파일보다 유난히 작다면 잘린 파일이 맞습니다. 이 확인만으로 원인 A가 거의 확정됩니다.

2프로그램을 지우고 잔여 폴더까지 확인한다

Win + I → "앱" → "설치된 앱"에서 제거한 뒤, C:\Program Files와 C:\Program Files (x86)에 남은 폴더가 있으면 지웁니다. 깨진 파일이 남아 있으면 새로 설치해도 그 파일이 우선될 수 있습니다.

3설치 파일을 새로 내려받아 설치한다

예전에 받아 둔 설치 파일을 다시 쓰지 않습니다. 그 설치 파일 자체가 이미 잘려 있었다면 몇 번을 다시 깔아도 같은 창이 뜹니다. 공식 홈페이지에서 새로 받아, 다운로드가 끝까지 완료된 뒤 실행합니다.

이 방법이 안 통하는 경우

새로 받아 설치했는데도 같은 파일 이름으로 다시 뜬다면, 설치 직후 그 파일을 무언가가 다시 건드리고 있는 것입니다. 백신 격리를 먼저 확인해야 하므로 원인 C로 넘어갑니다. 창의 경로가 System32나 SysWOW64였다면 애초에 이 갈래가 아니므로 원인 B로 갑니다.

원인 BVisual C++ 재배포 패키지가 손상되거나 꼬였다

창의 파일 이름이 msvcp·vcruntime·mfc로 시작할 때 이 갈래입니다.

이 파일들은 특정 프로그램의 것이 아니라 여러 프로그램이 함께 쓰는 공용 부품입니다. 그래서 한 벌이 깨지면 서로 관계없는 프로그램들이 동시에 같은 창을 띄웁니다.

1설치된 목록에서 짝이 맞는지 본다

Win + I → "앱" → "설치된 앱" → 검색창에 Visual C++를 입력합니다. 같은 연도 항목이 x86과 x64 두 줄로 있어야 합니다. 32비트 프로그램은 x64가 아무리 많아도 x86이 없으면 열리지 않습니다.

2제거 대신 복구를 먼저 쓴다

항목 우측 점 세 개 → "수정"을 누르면 복구(Repair) 버튼이 있는 창이 뜹니다. 복구는 빠지거나 깨진 파일만 원래 자리에 다시 써 넣는 동작이라, 이 오류에 정확히 맞는 조치입니다.

3복구가 실패하면 최신 버전을 덮어 설치하고 재부팅한다

마이크로소프트 공식 다운로드 페이지에서 최신 지원 버전을 받아 x86과 x64를 모두 설치합니다. 설치 직후에는 예전 파일이 메모리에 남아 있을 수 있으므로 반드시 재부팅한 뒤 확인합니다.

DLL 파일을 인터넷에서 받아 System32에 넣지 않습니다

깨진 파일 하나만 구해다 덮으면 될 것 같지만, 출처가 불분명한 DLL은 버전이 어긋나 다른 프로그램까지 같은 오류로 끌고 들어갑니다. 공식 재배포 패키지로 한 벌 전체를 맞추는 것이 유일하게 안전한 방법입니다.

이 방법이 안 통하는 경우

복구 후 잠깐 되다가 재부팅하면 같은 파일 이름으로 다시 뜬다면, 그 파일이 계속 지워지고 있는 것입니다. 백신 격리(원인 C)를 먼저 확인하고, 격리 기록이 없으면 시스템 파일 쪽(원인 D)으로 넘어갑니다.

원인 C백신이 파일을 잘라 갔거나 악성코드가 변조했다

고쳐 놓은 파일이 며칠 뒤 다시 깨진다면 이 갈래를 먼저 봅니다.

백신이 실행 파일의 일부를 위험 요소로 판단해 잘라 내거나 통째로 격리하면, 남은 파일은 MZ 표시를 잃은 껍데기가 됩니다. 반대로 악성코드가 정상 파일을 자기 것으로 덮어써도 같은 결과가 됩니다.

1보호 기록에서 그 파일 이름을 찾는다

Win + I → "개인 정보 및 보안" → "Windows 보안" → "Windows 보안 열기" → "바이러스 및 위협 방지" → "보호 기록"을 엽니다. 오류가 시작된 날짜 부근에 창에 뜬 파일 이름이 있는지 확인합니다.

2오탐이 확실할 때만 복원하고 제외에 넣는다

해당 항목을 눌러 "작업" → "허용" 또는 "복원"을 고릅니다. 복원 후에도 다시 격리되면 그 폴더를 제외 목록에 추가합니다. 출처를 확신할 수 없는 파일은 복원하지 않습니다.

3기록이 없으면 반대쪽을 의심하고 전체 검사를 돌린다

격리 기록이 없는데 파일이 계속 깨진다면 변조 쪽입니다. "바이러스 및 위협 방지" → "검사 옵션"에서 전체 검사 또는 오프라인 검사를 실행합니다. 오프라인 검사는 재부팅 후 윈도우 밖에서 검사하므로, 실행 중에는 지울 수 없는 파일까지 다룹니다.

다른 회사 백신을 쓴다면 그쪽 검역소도 봅니다

타사 백신을 설치하면 윈도우 보안의 실시간 보호는 꺼지고 기록도 그쪽에 쌓입니다. 이 경우 "보호 기록"이 비어 있는 것이 정상이므로, 쓰고 있는 백신의 격리 보관함을 같은 방식으로 확인해야 합니다.

이 방법이 안 통하는 경우

격리 기록도 없고 검사도 깨끗한데 여러 프로그램에서 같은 창이 반복된다면, 개별 파일이 아니라 윈도우가 관리하는 파일 자체가 깨진 상태일 수 있습니다. 원인 D로 넘어갑니다.

원인 D시스템 파일이 손상됐거나 업데이트가 덜 적용됐다

부팅할 때마다 여러 프로그램에서 줄줄이 뜰 때 봅니다.

업데이트가 중간에 끊기거나, 정전·강제 종료로 쓰기가 끊기면 시스템 파일이 절반만 쓰인 상태로 남을 수 있습니다. 이 상태에서는 그 파일을 부르는 모든 프로그램이 같은 창을 띄웁니다.

1시스템 파일 검사를 돌린다

sfc /scannow

시작 버튼을 우클릭해 "터미널(관리자)"로 연 다음 실행합니다. 100%까지 5~15분 걸립니다. 도중에 창을 닫지 않습니다.

2복구하지 못했다고 나오면 원본부터 고친다

DISM /Online /Cleanup-Image /RestoreHealth

sfc가 복구에 쓰는 원본 저장소 자체가 깨졌을 때 필요한 명령입니다. 완료 후 sfc /scannow를 한 번 더 돌리고 재부팅합니다.

3업데이트 직후에 시작됐다면 그 항목을 확인한다

Win + I → "Windows 업데이트" → "업데이트 기록"에서 오류 시작일 직전에 설치된 항목을 확인합니다. 되돌릴 때는 임시 조치로만 쓰고, 원인이 확인되면 다시 최신 상태로 올립니다.

결과 문구는 세 가지로 갈립니다. "위반 사항을 발견하지 못했습니다"면 시스템 파일은 정상이므로 다시 원인 A·B로 돌아가고, "손상된 파일을 복구했습니다"면 재부팅 후 재현 여부를 확인하고, "복구할 수 없는 손상된 파일을 발견했습니다"면 DISM을 먼저 돌린 뒤 다시 시도합니다.

이 방법이 안 통하는 경우

검사가 모두 깨끗한데도 특정 계정에서만 오류가 반복된다면, 시스템이 아니라 그 계정의 프로필이 손상된 경우입니다. 새 로컬 계정을 하나 만들어 같은 프로그램을 실행해 보고, 새 계정에서 정상이면 계정을 옮기는 쪽으로 판단합니다.

어느 파일이 문제인지 이름으로 특정하는 법

창에 파일 이름이 없거나 빈 창만 뜰 때 반드시 거치는 단계입니다.

0xc000012f는 파일 하나를 지목하는 오류입니다. 그 이름을 모르면 어떤 조치도 추측이 됩니다. 이벤트 기록에는 실행 파일과 문제를 낸 모듈 이름이 함께 남습니다.

1응용 프로그램 로그를 연다

eventvwr.msc

Win + R로 실행한 뒤 좌측에서 "Windows 로그" → "응용 프로그램"을 고르고, 오류 창이 떴던 시각과 같은 줄의 항목을 클릭합니다.

2실행 파일과 모듈 이름을 함께 적는다

"일반" 탭에서 오류가 발생한 응용 프로그램 이름과 오류가 발생한 모듈 이름을 확인합니다. 두 이름이 같으면 그 프로그램 본체가, 다르면 그 프로그램이 부르는 부품이 깨진 것입니다.

3경로로 갈래를 정한다

경로가 프로그램 설치 폴더면 원인 A, System32·SysWOW64의 msvcp·vcruntime·mfc면 원인 B, 그래픽·오디오 유틸리티 폴더면 그 드라이버를 제조사 페이지에서 다시 설치하는 쪽으로 갑니다.

부팅 직후에 뜨는 창은 시작 프로그램 목록과 맞춰 봅니다

이름 없는 빈 창이 부팅할 때마다 뜬다면, Ctrl + Shift + Esc의 "시작 프로그램 앱" 목록과 이벤트 기록의 시각을 맞춰 어떤 항목이 그 시점에 실행됐는지 좁힐 수 있습니다.

자주 묻는 질문

본문에서 다루지 않은 갈래를 짧게 정리했습니다.

Q.0xc000012f가 서명 오류라는 설명을 봤는데 맞나요?

A.다른 번호와 섞인 설명입니다. 서명·해시를 카탈로그에서 찾을 수 없다는 뜻의 STATUS_INVALID_IMAGE_HASH는 0xC0000428이고, 0xc000012f는 STATUS_INVALID_IMAGE_NOT_MZ로 파일 앞부분의 MZ 표시가 없다는 뜻입니다. 그래서 조치도 서명 확인이 아니라 파일 자체를 온전한 것으로 되돌리는 쪽입니다.

Q.재설치했는데 똑같은 창이 다시 뜹니다.

A.같은 설치 파일을 다시 썼다면 그 설치 파일이 이미 잘려 있었을 가능성이 큽니다. 공식 홈페이지에서 새로 받고, 그래도 같으면 설치 직후 파일이 격리되고 있는지(원인 C)를 확인합니다.

Q.인터넷에서 그 DLL만 받아 넣어도 되나요?

A.권하지 않습니다. 버전이 조금만 달라도 그 파일을 함께 쓰는 다른 프로그램까지 같은 오류로 끌려 들어갑니다. 공식 재배포 패키지로 한 벌을 맞추는 방법만 안전합니다.

Q.게임이나 게임 런처에서 떠도 같은 순서인가요?

A.구조는 같습니다. 다만 게임은 오버레이 DLL과 그래픽 유틸리티가 함께 얽히는 경우가 많아, 7번 섹션에서 모듈 경로를 먼저 확인한 뒤 해당 드라이버를 제조사 페이지에서 다시 설치하는 순서가 빠릅니다.

Q.특정 계정에서만 뜨는 것도 이 오류인가요?

A.같은 번호가 뜰 수 있습니다. 새 로컬 계정을 만들어 같은 프로그램을 실행해 보고 그쪽에서 정상이면 프로필 손상 쪽입니다. 이때는 시스템 전체를 손대지 말고 계정을 옮기는 편이 안전합니다.

함께 보면 좋은 글

프로그램이 아예 시작되지 않을 때 함께 나오는 번호들입니다.

0xc0000142 오류 해결 순서 파일은 멀쩡한데 초기화 단계에서 실패할 때의 갈래입니다 · 눌러서 확인하기 → 지정된 모듈을 찾을 수 없습니다(오류 126), 원인 4가지와 각각의 해결법 모듈 이름은 알았는데 그 파일이 아예 없을 때 봅니다 · 눌러서 확인하기 → 0xc0000135 응용 프로그램을 시작하지 못했습니다 해결 순서 실행에 필요한 구성 요소가 빠져 있을 때의 갈래입니다 · 눌러서 확인하기 →
확인 환경 · 윈도우 11 24H2 / 윈도우 10 22H2 기준, 2026년 8월 확인
참고 문서 · Microsoft Learn — [MS-ERREF] NTSTATUS 값 목록 (0xC000012F)

광고자리 · 글 아래