이 글을 3줄로 요약하면
· 0x80070005의 내부 이름은 E_ACCESSDENIED입니다. 파일을 못 받은 게 아니라 쓸 권한이 없어서 멈춘 상태입니다.
· 권한이 막히는 지점은 네 갈래이고, 각각 손대는 대상이 다릅니다.
· 판별표로 갈래를 정하고 그 항목만 처리하면 됩니다. 명령을 전부 순서대로 칠 필요가 없습니다.
0x80070005는 정확히 무슨 뜻인가
"네트워크가 불안해서"가 아닙니다. 파일은 이미 다 받아 놓은 상태입니다.
이 코드의 내부 이름은 E_ACCESSDENIED, 우리말로 "액세스가 거부되었습니다"입니다. 윈도우 내부 오류 코드 중 가장 오래된 축에 드는 범용 코드라서, 업데이트뿐 아니라 정품 인증·백업·설치 과정에서도 같은 숫자가 나옵니다.
업데이트에서 이 코드가 뜨는 상황은 하나로 정리됩니다. 다운로드는 끝났는데, 받은 파일을 시스템 폴더에 적용하려는 순간 쓰기가 막힌 것입니다. 그래서 진행률은 늘 어느 정도까지 올라갔다가 실패로 돌아섭니다.
쓰기를 시도하는 주체는 로그인한 사용자 계정이 아니라 TrustedInstaller라는 전용 서비스 계정입니다. 이 계정이 C:\Windows\WinSxS나 C:\Windows\SoftwareDistribution에 대한 권한을 잃으면 관리자로 로그인해 있어도 같은 코드가 뜹니다.
먼저 설정의 Windows 업데이트에서 업데이트 기록을 열어 실패한 항목의 KB 번호를 적어 두세요. 같은 KB만 반복 실패하는지, 어떤 업데이트를 걸어도 똑같이 실패하는지가 판별표의 첫 갈림길입니다.
증상으로 원인 좁히기
어디서 어떻게 실패하는지가 손댈 대상을 정합니다.
| 증상 | 유력한 원인 | 먼저 볼 항목 |
|---|---|---|
| 어떤 업데이트를 걸어도 전부 같은 코드로 실패 | 시스템 폴더 권한·소유권 손상 | 원인 A → 권한 재설정 |
| 권한 정리 도구나 최적화 프로그램을 돌린 뒤부터 시작 | TrustedInstaller 소유권 상실 | 원인 A → 소유권 지정 |
| 특정 KB 하나만 반복 실패, 다른 업데이트는 정상 설치 | 해당 패키지의 캐시가 깨진 상태 | 원인 B → 캐시 초기화 |
| 다운로드에서 멈추거나 0%에서 진행이 안 됨 | catroot2 서명 캐시 손상 | 원인 B → catroot2 재생성 |
| 캐시를 지워도 같은 자리에서 실패, sfc가 손상 파일을 보고 | 구성 요소 저장소 자체 손상 | 원인 C → DISM 복구 |
| 회사 PC이거나, 백신을 끄면 설치가 되는 경우 | 보안 프로그램·필터 드라이버·정책 차단 | 원인 D → 차단 요소 확인 |
단계마다 재부팅하고 한 번만 재시도합니다
권한과 캐시를 다루는 작업은 재부팅해야 반영됩니다. 명령을 여러 개 몰아서 실행한 뒤 한꺼번에 재부팅하면, 어느 항목이 효과가 있었는지 판별할 수 없습니다.
원인 A시스템 폴더 권한과 소유권 손상
모든 업데이트가 예외 없이 같은 코드로 실패한다면 여기입니다.
마이크로소프트 공식 문제 해결 문서가 이 오류의 첫 번째 조치로 제시하는 항목입니다. WinSxS와 SoftwareDistribution 폴더의 접근 권한을 기본값으로 되돌리는 작업이며, 파일을 지우거나 바꾸지 않습니다.
1두 폴더의 권한을 기본값으로 되돌린다
icacls "%windir%\SoftwareDistribution" /reset /t /c /q
시작 버튼을 우클릭해 터미널(관리자)을 열고 한 줄씩 실행합니다. 항목 수가 많아 몇 분 걸립니다. 화면에 처리 결과 요약이 나오면 끝난 것입니다.
2WinSxS 소유자를 TrustedInstaller로 되돌린다
시스템 폴더를 열어 보려고 소유권을 사용자 계정으로 가져온 적이 있다면 이 명령이 그 상태를 되돌립니다. 계정 이름은 큰따옴표 안에 있는 그대로 입력합니다.
3재부팅하고 업데이트를 한 번만 다시 건다
권한 변경은 재부팅 후에 온전히 적용됩니다. 여기서 통과하면 아래 항목은 볼 필요가 없습니다.
소유권을 사용자 계정으로 바꾸는 안내는 따르지 않습니다
시스템 폴더의 소유자를 내 계정으로 바꾸라는 설명이 돌아다니지만, 그렇게 하면 다음 업데이트에서 같은 오류가 다시 납니다. 소유자는 TrustedInstaller여야 정상입니다.
이 방법이 안 통하는 경우
권한을 되돌린 뒤에도 특정 KB 하나만 계속 실패한다면 권한 문제가 아닙니다. 그 패키지의 캐시가 깨진 것이므로 원인 B로 갑니다. icacls 실행 중 "액세스가 거부되었습니다"가 대량으로 출력된다면 관리자 권한 창이 아닌 경우이니 창 제목에 관리자가 붙어 있는지 먼저 확인합니다.
원인 B업데이트 캐시와 catroot2 손상
특정 KB만 반복 실패하거나 다운로드가 0%에서 안 움직인다면 여기입니다.
SoftwareDistribution은 받은 업데이트 파일이 임시로 쌓이는 폴더이고, catroot2는 그 파일들의 서명을 검증한 기록이 담기는 폴더입니다. 둘 중 하나가 깨지면 파일을 다시 받아도 같은 지점에서 막힙니다.
두 폴더는 이름만 바꿔 두면 윈도우가 새로 만들어 씁니다. 지우는 것이 아니라 옆으로 치워 두는 방식이라 되돌리기도 쉽습니다.
1관련 서비스를 먼저 멈춘다
net stop bits
net stop cryptSvc
서비스가 폴더를 붙잡고 있으면 이름을 바꿀 수 없습니다. 세 줄 모두 "중지했습니다"가 나와야 다음으로 넘어갑니다.
2두 폴더의 이름을 바꾼다
ren %windir%\System32\catroot2 catroot2.old
개인 파일은 들어 있지 않은 폴더라 이름을 바꿔도 문서나 설정에는 영향이 없습니다.
3서비스를 역순으로 다시 시작한다
net start bits
net start wuauserv
재부팅한 뒤 업데이트를 다시 걸면 폴더가 새로 만들어지면서 파일을 처음부터 다시 받습니다.
이 방법이 안 통하는 경우
폴더 이름을 바꿀 때 "다른 프로그램이 사용 중"이라고 나오면 서비스가 완전히 멈추지 않은 것이니 1번을 다시 실행합니다. 새 폴더가 정상적으로 만들어졌는데도 같은 코드로 실패한다면 캐시 문제가 아니므로 원인 C의 저장소 복구로 넘어갑니다.
원인 C구성 요소 저장소 자체의 손상
캐시를 비웠는데도 같은 자리에서 멈춘다면 여기입니다.
윈도우는 자기 구성 요소의 원본을 WinSxS 안에 보관하고, 업데이트할 때 이 원본을 기준으로 새 파일을 끼워 넣습니다. 기준이 되는 원본이 깨져 있으면 권한이 정상이어도 적용 단계에서 실패합니다.
1손상 여부부터 확인한다
복구 전에 검사만 하는 명령입니다. "복구 가능한 손상이 검색되었습니다"가 나오면 이 갈래가 맞습니다.
2저장소를 복구한다
인터넷에서 정상 원본을 받아 채워 넣습니다. 특정 진행률에서 한참 머무는 것은 정상이므로 연결을 유지한 채 기다립니다.
3시스템 파일을 이어서 검사한다
순서가 중요합니다. DISM으로 원본을 고친 뒤에 sfc를 돌려야 정상 파일로 복구됩니다. 반대로 하면 sfc가 깨진 원본을 그대로 복사합니다.
이 방법이 안 통하는 경우
DISM이 0x800f081f로 끝나면 원본을 받아 올 경로를 못 찾은 것이므로, 같은 빌드의 ISO를 마운트해 /Source: 옵션으로 지정해야 합니다. ScanHealth에서 "손상이 검색되지 않았습니다"가 나왔다면 저장소는 멀쩡하다는 뜻이니 원인 D로 넘어갑니다.
원인 D보안 프로그램·필터 드라이버·그룹 정책 차단
백신을 끄면 설치가 되거나, 회사에서 지급받은 PC라면 여기입니다.
타사 보안 프로그램은 파일 시스템 필터 드라이버라는 형태로 윈도우의 파일 접근을 중간에서 감시합니다. 이 감시 계층이 업데이트 파일 쓰기를 막으면 권한이 정상이어도 액세스 거부가 납니다.
1지금 걸려 있는 필터 드라이버를 확인한다
관리자 터미널에서 실행하면 목록이 나옵니다. 마이크로소프트 기본 항목이 아닌 이름이 보이면 그 보안 제품이 개입 중이라는 뜻입니다.
2실시간 보호를 잠깐 끄고 한 번만 재시도한다
타사 백신은 트레이 아이콘에서 일시 중지를 고르고, 윈도우 보안은 바이러스 및 위협 방지 설정에서 실시간 보호를 내립니다. 확인이 끝나면 반드시 다시 켭니다.
3회사 PC라면 정책 여부를 먼저 확인한다
그룹 정책으로 시스템 폴더 쓰기가 제한된 환경에서는 위 명령을 아무리 실행해도 결과가 같습니다. 실패한 KB 번호와 오류 코드를 담당 부서에 전달하는 편이 빠릅니다.
백신을 지우는 것이 해결책은 아닙니다
테스트로 잠깐 끄는 것과 제거하는 것은 다릅니다. 원인이 확인되면 제조사에 문의해 예외 설정을 받거나, 업데이트를 적용하는 동안만 보호를 내리는 방식으로 처리합니다.
이 방법이 안 통하는 경우
보호를 완전히 내린 상태에서도 같은 코드가 나온다면 보안 프로그램은 원인이 아닙니다. 여기서 항목을 더 바꾸는 대신 7번으로 가서 로그에 남은 실제 거부 대상을 확인합니다.
로그로 실제 거부 지점을 찾는 법
어떤 파일에서 막혔는지는 화면이 아니라 로그에 적혀 있습니다.
윈도우는 업데이트를 적용할 때마다 CBS.log에 진행 상황을 기록합니다. 액세스 거부가 나면 어느 경로에서 실패했는지가 그 자리에 남습니다. 이 한 줄이 위 네 갈래 중 어디인지 알려 줍니다.
1CBS.log에서 거부된 줄만 뽑는다
바탕화면에 텍스트 파일이 만들어집니다. 파일 안에서 경로가 적힌 마지막 줄이 실제로 막힌 대상입니다.
경로가 WinSxS 아래면 원인 A, SoftwareDistribution이나 catroot2 아래면 원인 B, 특정 구성 요소 이름과 함께 손상 표시가 있으면 원인 C, 경로 대신 낯선 드라이버 이름이 보이면 원인 D입니다.
2이벤트 로그에서 실패 기록을 함께 본다
Windows 로그의 시스템 항목을 오류로 필터링하면 WindowsUpdateClient 원본의 실패 기록이 보입니다. 어떤 KB가 언제 실패했는지 시간순으로 확인할 수 있습니다.
3그래도 안 되면 해당 KB를 수동으로 받는다
Microsoft 업데이트 카탈로그에서 KB 번호로 검색해 설치 파일을 직접 내려받아 실행하는 방법이 남아 있습니다. 업데이트 경로를 우회하므로 특정 KB만 실패하는 경우에 유효합니다.
자주 묻는 질문
명령을 실행하기 전에 자주 걸리는 지점들입니다.
Q.icacls 명령을 실행해도 안전한가요?
A.권한 정보를 기본값으로 되돌리는 명령이라 파일 자체를 지우거나 바꾸지 않습니다. 다만 경로를 잘못 입력하면 엉뚱한 폴더의 권한이 초기화되므로, 큰따옴표를 포함해 그대로 복사해 쓰는 편이 안전합니다.
Q.SoftwareDistribution 폴더 이름을 바꾸면 데이터가 사라지나요?
A.업데이트 임시 파일과 기록만 들어 있는 폴더라 개인 파일에는 영향이 없습니다. 다만 업데이트 기록 목록은 초기화되므로, 실패한 KB 번호는 이름을 바꾸기 전에 적어 두세요.
Q..old 폴더는 지워도 되나요?
A.업데이트가 정상적으로 끝난 것을 확인한 뒤에 지우면 됩니다. 새 폴더가 만들어져 동작하고 있다면 더 필요하지 않습니다.
Q.DISM과 sfc는 얼마나 걸리나요?
A.저장 장치와 손상 정도에 따라 다르지만 각각 10분 이상 걸리는 것이 보통입니다. 특정 진행률에서 오래 머무는 것은 정상이며, 중간에 창을 닫지 않습니다.
Q.정품 인증에서도 같은 코드가 뜹니다.
A.0x80070005는 범용 액세스 거부 코드라 업데이트가 아닌 곳에서도 나옵니다. 정품 인증에서 나온 경우라면 설정의 시스템 항목에서 정품 인증 문제 해결사를 먼저 실행하는 쪽이 맞습니다.
함께 보면 좋은 글
같은 업데이트 계열에서 자주 이어지는 오류입니다.
윈도우 업데이트 0x80070003 오류 원인 4가지와 증상별 해결 순서 (윈도우 10·11) 캐시 초기화로도 안 풀릴 때 함께 확인하면 갈래가 좁혀집니다 · 눌러서 확인하기 → 윈도우 업데이트 0x800f0831 오류 해결 방법 (SFC·DISM·업데이트 초기화) 특정 KB 하나만 계속 실패하는 상황을 따로 다뤘습니다 · 눌러서 확인하기 → 윈도우11 업데이트 0x800f0922 오류 완전 정리 다운로드는 끝났는데 설치 단계에서만 실패하는 또 다른 코드입니다 · 눌러서 확인하기 →참고 문서 · Troubleshoot Windows Update error 0x80070005 (Microsoft Learn)






