이 글을 3줄로 요약하면
· 0x80070002는 ERROR_FILE_NOT_FOUND, 즉 "지정된 파일을 찾을 수 없습니다"라는 뜻의 시스템 오류 코드입니다.
· 다운로드 실패가 아니라 업데이트가 참조하는 파일·폴더가 자리에 없을 때 나옵니다.
· 원인은 네 갈래입니다. 판별표에서 자기 증상을 찾아 해당 섹션부터 처리하면 됩니다.
0x80070002는 정확히 무슨 뜻인가
코드의 정체를 알면 어느 쪽을 손대야 하는지가 먼저 정해집니다.
0x80070002는 윈도우 업데이트 전용 코드가 아닙니다. 뒤 네 자리 0002는 윈도우 공통 시스템 오류 2번, 즉 ERROR_FILE_NOT_FOUND — "지정된 파일을 찾을 수 없습니다"를 뜻합니다. 앞의 0x8007은 그 오류가 윈도우 시스템 계층에서 났다는 표시입니다.
Microsoft 문서도 이 코드를 업데이트 과정에 필요한 파일이 없거나 손상된 상태로 설명합니다. 문서가 드는 상황은 구체적입니다. 이전 업데이트가 중간에 끊겨 시스템이 어중간한 상태로 남았거나, 참조 대상 폴더가 비어 있거나, 레지스트리 항목이 존재하지 않는 서비스·파일을 가리키는 경우입니다.
그래서 이 오류의 핵심 질문은 하나로 좁혀집니다. "무엇을 찾지 못했는가." 그 답은 추측이 아니라 CBS.log에 파일 경로로 남습니다. 7번 진단 섹션이 그 줄을 꺼내는 방법입니다.
날짜·시간부터 맞추라는 안내는 우선순위가 낮습니다
시계가 크게 어긋나면 업데이트 서버와의 인증서 검증이 실패하는 것은 사실이지만, 그때는 보통 0x80072F8F처럼 연결·인증서 계열 코드가 뜹니다. 0x80070002는 파일을 찾지 못한 코드라 성격이 다릅니다. 시계가 몇 분 이상 틀어져 있다면 맞춰 두되, 그것만으로 해결되기를 기대하고 시간을 쓰지는 않는 편이 낫습니다.
이 코드는 업데이트 확인·다운로드·설치 어느 단계에서든 나올 수 있습니다. 어느 단계에서 멈췄는지를 먼저 기억해 두면 아래 판별표에서 원인을 좁히기 쉬워집니다.
증상으로 원인 좁히기
같은 코드라도 멈추는 지점이 다릅니다. 가장 가까운 줄부터 처리합니다.
| 증상 | 유력한 원인 | 먼저 볼 항목 |
|---|---|---|
| 진행률이 초반에서 멈췄다가 실패하고 같은 파일을 계속 다시 받는다 | 업데이트 캐시 손상 | 원인 A → 캐시 초기화 |
| 업데이트 외에 다른 기능·앱도 함께 오작동한다 | 시스템 파일 손상 | 원인 B → DISM·sfc |
| "업데이트 확인" 버튼을 눌러도 반응이 없거나 즉시 실패한다 | 업데이트 서비스 중지 | 원인 C → 서비스 상태 |
| 캐시를 비우고 DISM까지 돌렸는데 같은 코드가 반복된다 | 잘못된 레지스트리 항목 | 원인 D → 서비스 키 확인 |
| .NET 관련 항목이 함께 실패하거나 관련 폴더가 비어 있다 | .NET 서비스 키 잔재 | 원인 D → 서비스 키 확인 |
| 무엇이 빠졌는지부터 모르겠다 | 원인 특정이 안 된 상태 | 진단 → CBS.log 확인 |
두 줄 이상 해당한다면 A → B → C → D 순으로 갑니다. 캐시가 깨진 상태에서는 뒤 단계를 처리해도 같은 파일에서 다시 막히기 때문입니다.
원인 A업데이트 캐시가 깨져 파일을 못 찾는다
이 코드에서 가장 자주 해당하는 갈래입니다. 여기부터 처리합니다.
윈도우는 받은 업데이트 파일을 C:\Windows\SoftwareDistribution에 쌓고, 서명 검증 정보는 C:\Windows\System32\catroot2에 둡니다. 이전 시도가 중간에 끊기면 목록에는 있는데 실제 파일은 없는 상태가 남고, 다음 시도에서 그 파일을 찾다가 이 코드가 납니다.
1업데이트 관련 서비스를 멈춘다
net stop wuauserv
net stop appidsvc
net stop cryptsvc
시작 버튼을 우클릭해 터미널(관리자)로 연 뒤 한 줄씩 실행합니다. 서비스가 켜져 있으면 폴더가 사용 중이라 이름을 바꿀 수 없습니다.
2캐시 폴더 두 개의 이름을 바꾼다
ren C:\Windows\System32\catroot2 catroot2.old
삭제 대신 이름만 바꿉니다. 문제가 없으면 나중에 .old 폴더를 지우면 되고, 이상이 생기면 이름을 되돌릴 수 있습니다.
3서비스를 다시 켜고 재부팅한다
net start wuauserv
net start appidsvc
net start cryptsvc
재부팅 후 업데이트를 다시 확인하면 목록과 파일을 처음부터 새로 만듭니다. 첫 확인이 평소보다 오래 걸리는 것은 정상입니다.
4내장 문제 해결사도 한 번 돌려 둔다
설정 → 시스템 → 문제 해결 → 기타 문제 해결사에서 Windows Update 항목을 실행합니다. 서비스 등록과 권한 정도의 문제는 여기서 정리됩니다. 실행 창(Win + R)에 ms-settings:troubleshoot을 넣으면 바로 이동합니다.
개인 파일과는 무관한 폴더입니다
SoftwareDistribution과 catroot2는 업데이트 작업용 임시 폴더라 문서·사진·설치된 프로그램과 관계가 없습니다. 다음 업데이트 때 윈도우가 다시 만듭니다.
이 방법이 안 통하는 경우
캐시를 새로 만들었는데도 같은 코드가 반복되면, 없는 파일이 캐시 밖에 있다는 뜻입니다. 시스템 파일 쪽을 보는 원인 B로 넘어갑니다. 서비스 중지 명령에서 "액세스가 거부되었습니다"가 나오면 창이 관리자 권한이 아니니 창부터 다시 엽니다.
원인 B시스템 파일과 구성 요소 저장소가 손상됐다
업데이트 말고 다른 기능도 함께 이상하다면 이쪽입니다.
업데이트는 기존 파일을 새 버전으로 교체하는 작업입니다. 교체 대상 파일이 이미 사라졌다면 그 자리에서 "파일을 찾을 수 없다"는 결과가 나옵니다. 이때는 개별 파일을 손대는 대신 윈도우가 가진 복구 도구를 순서대로 씁니다.
1구성 요소 저장소를 먼저 복구한다
10~20분 걸리고, 20%와 40% 부근에서 오래 멈춘 것처럼 보여도 정상입니다. 이 명령은 온라인에서 정상 파일을 받아오므로 연결이 끊기지 않아야 합니다.
2복구된 저장소를 기준으로 시스템 파일을 맞춘다
순서를 지키는 이유가 있습니다. sfc는 저장소의 정상 파일을 원본으로 복사하므로, 저장소를 고치기 전에 돌리면 복사해 올 원본 자체가 없습니다.
3결과 문구를 그대로 읽는다
"손상된 파일을 찾았고 이를 복구했습니다"면 재부팅 후 업데이트를 재시도합니다. "일부를 복구할 수 없습니다"면 저장소 원본도 손상된 상태이므로 1번을 한 번 더 돌린 뒤 sfc를 다시 실행합니다.
DISM이 원본을 못 받아올 때
"원본 파일을 찾을 수 없습니다"가 나오면 지금 설치된 것과 같은 빌드의 윈도우 ISO를 마운트한 뒤 /Source 옵션으로 지정합니다. 빌드가 다른 ISO를 쓰면 복구가 진행되다 다시 실패합니다.
이 방법이 안 통하는 경우
두 명령이 모두 정상으로 끝났는데 업데이트만 계속 실패한다면 파일이 아니라 그 파일을 부르는 쪽이 문제입니다. 서비스 상태를 보는 원인 C로 넘어갑니다.
원인 C업데이트 관련 서비스가 멈춰 있다
"업데이트 확인"이 즉시 실패하거나 아무 반응이 없을 때 해당합니다.
업데이트는 여러 서비스가 함께 움직여야 진행됩니다. 최적화 프로그램이나 업데이트 차단 도구가 시작 유형을 사용 안 함으로 바꿔 두면, 필요한 구성 요소를 부르지 못해 같은 코드로 이어질 수 있습니다.
1서비스 창에서 상태를 확인한다
Win + R에 입력해 엽니다. 목록에서 Windows Update 항목의 상태와 시작 유형 열을 봅니다.
| 서비스 이름 | 역할 | 권장 시작 유형 |
|---|---|---|
| Windows Update (wuauserv) | 업데이트 검색·설치 전반 | 수동 (트리거 시작) |
| Background Intelligent Transfer (BITS) | 파일 다운로드 전송 | 수동 |
| Cryptographic Services (cryptsvc) | 서명·인증서 검증 | 자동 |
| Windows Installer (msiserver) | 패키지 설치 처리 | 수동 |
2사용 안 함으로 돼 있으면 되돌린다
해당 항목을 더블클릭해 시작 유형을 위 표의 값으로 바꾸고 시작 버튼을 누릅니다. 네 개 중 하나라도 사용 안 함이면 업데이트 전체가 막힙니다.
3명령으로 한 번에 되돌린다
sc config bits start= delayed-auto
sc config cryptsvc start= auto
터미널(관리자)에서 실행합니다. 등호 뒤의 공백이 문법의 일부라 빠지면 오류가 납니다.
업데이트 차단 도구를 쓰고 있다면 먼저 해제합니다
서비스를 되살려도 그런 도구가 다시 꺼 버리면 원점입니다. 문제를 해결하는 동안에는 도구를 종료하거나 차단 설정을 해제해 둡니다.
이 방법이 안 통하는 경우
서비스가 모두 정상인데 같은 코드가 반복된다면, 등록된 항목이 이미 없는 대상을 가리키는 경우일 수 있습니다. 원인 D로 넘어갑니다.
원인 D레지스트리가 없는 파일을 가리킨다
앞의 조치가 모두 통하지 않을 때 Microsoft 문서가 제시하는 갈래입니다.
Microsoft 문서는 이 코드의 사례 하나를 이렇게 설명합니다. CBS 로그에 clr_optimization_v4.0.30319_32 같은 서비스를 찾지 못했다는 기록이 남고, 실제로 C:\Windows\Microsoft.NET\Framework\v4.0.30319 폴더가 비어 있는 경우입니다. 등록만 남고 실체가 사라진 상태입니다.
시작 전에 반드시 백업합니다
레지스트리 편집기에서 해당 키를 선택하고 파일 → 내보내기로 저장해 둡니다. 문제가 생기면 저장한 .reg 파일을 더블클릭해 되돌릴 수 있습니다.
1가리키는 폴더가 실제로 비어 있는지 먼저 본다
파일 탐색기 주소창에 C:\Windows\Microsoft.NET\Framework\v4.0.30319를 붙여 넣어 확인합니다. 폴더가 정상이면 이 원인이 아닙니다. 확인 없이 키부터 지우지 않습니다.
2남아 있는 서비스 키를 연다
Win + R → regedit → 주소창에 붙여 넣고 Enter를 누릅니다. 64비트 항목은 끝이 _64입니다.
3해당 키 두 개만 삭제하고 재시도한다
문서가 지목하는 _32와 _64 두 키만 지웁니다. 그 밖의 서비스 항목은 건드리지 않습니다. 삭제 후 업데이트를 다시 시도합니다.
4.NET 쪽이 원인이면 런타임을 다시 설치한다
폴더가 비어 있었다면 .NET Framework 구성 요소 자체가 빠진 것입니다. Microsoft 공식 다운로드 페이지에서 런타임을 다시 설치한 뒤 업데이트를 재시도합니다.
이 방법이 안 통하는 경우
문서의 사례와 로그 내용이 다르다면 빠진 대상도 다릅니다. 임의로 다른 키를 지우지 말고 7번 진단에서 CBS.log가 지목하는 경로를 먼저 확인합니다. 그래도 해결되지 않으면 실패한 KB를 카탈로그에서 수동 설치하거나, 파일과 앱을 유지하는 제자리 복구 설치로 넘어갑니다.
어떤 파일이 빠졌는지 찾아내는 법
"파일을 찾을 수 없다"는 코드이므로, 어떤 파일인지 로그에서 직접 읽습니다.
업데이트 설치 과정은 C:\Windows\Logs\CBS\CBS.log에 남습니다. Microsoft 문서가 이 코드를 진단할 때 확인하는 것도 이 로그이며, 실패한 줄에는 ERROR_FILE_NOT_FOUND와 함께 찾지 못한 대상이 적혀 있습니다.
1시스템 로그에서 실패 시각을 잡는다
Windows 로그 → 시스템에서 WindowsUpdateClient 원본의 오류 항목을 찾습니다. 어떤 업데이트가 언제 실패했는지가 KB 번호와 함께 남습니다.
2로그에서 해당 오류 줄만 뽑아낸다
터미널(관리자)에서 실행합니다. 로그 전체를 읽을 필요 없이 필요한 줄만 나옵니다.
3결과가 길면 파일로 저장해 연다
바탕화면에 텍스트로 저장한 뒤 메모장으로 봅니다. 로그가 이미 넘어갔다면 같은 폴더의 CbsPersist_로 시작하는 파일도 함께 확인합니다.
줄에 적힌 것이 폴더 경로면 그 폴더가 실제로 있는지 탐색기로 확인하고, 서비스 이름이면 원인 D처럼 등록만 남은 상태인지 봅니다. 파일 이름이면 그 파일이 속한 구성 요소를 다시 설치하는 쪽으로 방향이 잡힙니다.
4특정 KB만 실패하면 수동 설치로 우회한다
1번에서 확인한 KB 번호로 Microsoft 업데이트 카탈로그(catalog.update.microsoft.com)를 검색해 내 버전·아키텍처에 맞는 .msu를 받아 실행합니다. 캐시를 거치지 않아 같은 지점을 피해 갈 수 있습니다.
조치 시각을 적어 두면 로그 읽기가 쉬워집니다
CBS.log는 계속 덧붙습니다. 캐시를 초기화한 시각, DISM을 돌린 시각을 메모해 두면 다시 실패했을 때 그 이후에 새로 생긴 줄만 보면 되므로 판단이 빨라집니다.
자주 묻는 질문
이 오류를 처리할 때 판단이 갈리는 지점만 모았습니다.
Q.캐시 폴더를 지우면 내 파일도 지워지나요?
A.아니요. SoftwareDistribution과 catroot2는 업데이트 작업용 임시 폴더라 개인 파일과 무관하고, 재시도 시 자동으로 다시 생성됩니다. 다만 삭제보다 이름 변경이 안전합니다. 문제가 생겨도 되돌릴 수 있기 때문입니다.
Q.명령 입력 중 "액세스가 거부되었습니다"가 뜹니다.
A.관리자 권한이 아닌 창에서 실행한 경우입니다. 시작 버튼을 우클릭해 터미널(관리자)로 다시 연 뒤 실행합니다. 창 제목에 "관리자"가 붙어 있는지 확인하면 됩니다.
Q.날짜·시간을 맞추면 해결된다는 글이 많던데요.
A.시계가 크게 어긋나면 인증서 검증이 실패하는 것은 맞지만, 그 경우 보통 연결·인증서 계열 코드가 표시됩니다. 0x80070002는 파일을 찾지 못한 코드라 성격이 다릅니다. 시간이 몇 분 이상 틀어져 있으면 맞춰 두되, 그것을 주된 해법으로 삼지는 않는 편이 낫습니다.
Q.윈도우 10과 11에서 방법이 다른가요?
A.명령과 폴더 경로는 같습니다. 설정 앱의 메뉴 위치만 다릅니다. 윈도우 10은 설정 → 업데이트 및 보안, 윈도우 11은 설정 → Windows 업데이트 아래에 같은 항목이 있습니다.
Q.이 PC 초기화를 바로 해도 되나요?
A.가능하지만 시간이 오래 걸리고 되돌리기 어렵습니다. 앞의 네 원인은 대부분 몇 분에서 몇십 분이면 끝나므로 순서대로 확인한 뒤 선택합니다. 초기화를 하더라도 내 파일 유지 옵션을 먼저 고려합니다.
Q.업데이트가 아니라 백업·복원에서 같은 코드가 떴습니다.
A.0x80070002는 업데이트 전용 코드가 아니라 공통 시스템 오류라 다른 기능에서도 나옵니다. 뜻은 동일하게 "지정된 파일을 찾을 수 없습니다"이므로, 그 기능이 참조하는 경로가 실제로 존재하는지부터 확인하면 됩니다.
함께 보면 좋은 글
업데이트 오류 코드가 다르게 뜬다면 아래 글에서 코드별로 확인하세요.
윈도우 업데이트 오류 0x80070003 해결법, 저는 이 순서로 뚫었습니다 (2026년 최신) 경로를 찾지 못하는 바로 옆 번호의 코드입니다 · 눌러서 확인하기 → 윈도우 업데이트 0x80073712 오류, 저는 이 순서로 해결했습니다 (구성 요소 저장소 손상 완전정리) DISM으로도 안 잡히는 저장소 손상일 때 이어서 봅니다 · 눌러서 확인하기 → 이 순서대로 하면 윈도우 업데이트 0x80070422 오류 대부분 해결됩니다 업데이트 서비스가 꺼져 있어 생기는 코드와 비교할 때 봅니다 · 눌러서 확인하기 →참고 문서 · Microsoft Learn — Windows 업데이트 오류 0x80070002 문제 해결





