이 글을 3줄로 요약하면
· 0x80070057은 고장 이름이 아니라 "건네받은 값이 잘못됐다"는 반환값입니다. Win32 오류 87번(0x57) ERROR_INVALID_PARAMETER를 HRESULT 형식으로 감싼 값입니다.
· 그래서 파일 복사·윈도우 업데이트·스토어 앱 설치처럼 전혀 다른 작업이 같은 코드를 냅니다. 코드만 보고 원인을 고를 수 없습니다.
· 갈림길은 "언제 떴는가" 하나뿐입니다. 아래 판별표에서 자기 상황을 찾고 그 섹션만 처리하면 됩니다.
목차
3. 원인 A · 대상 드라이브의 파일 시스템이 손상됐다
4. 원인 B · 시스템 파일과 구성 요소 저장소가 손상됐다
5. 원인 C · 업데이트·스토어 캐시가 꼬였거나 날짜·시간이 어긋났다
0x80070057은 정확히 무슨 뜻인가
코드 자체가 원인을 말해 주지 않는 이유부터 짚습니다.
화면에는 상황마다 다른 문구가 붙지만 뒤에 달리는 숫자는 같습니다. 파일 복사 중에는 "대상 폴더 액세스가 거부되었습니다. 오류 0x80070057: 매개변수가 잘못되었습니다", 윈도우 업데이트 중에는 "업데이트를 확인하는 동안 문제가 발생했습니다. 오류 코드 0x80070057", 스토어 앱 설치 중에는 "다시 시도해 주세요 - 0x80070057"이 뜹니다.
마이크로소프트의 시스템 오류 코드 문서는 87 (0x57)번을 ERROR_INVALID_PARAMETER로 정의하고, 설명을 "매개 변수가 올바르지 않습니다(The parameter is incorrect)"로 적습니다. 화면에 뜨는 "매개변수가 잘못되었습니다"는 같은 문장의 다른 번역입니다. 앞에 붙은 0x8007은 이 Win32 오류를 HRESULT 형식으로 감쌌다는 표시이고, 뒤 네 자리 0057이 곧 87번입니다.
정리하면 이 코드는 "어떤 함수가 넘겨받은 값을 그대로 쓸 수 없어 되돌려보냈다"는 뜻입니다. 무엇이 잘못된 값이었는지는 코드 안에 들어 있지 않습니다.
그래서 복사·업데이트·설치처럼 하는 일이 완전히 다른 작업이 하나의 번호로 묶입니다. 코드를 검색해 나온 방법을 위에서부터 순서대로 따라가면 대부분 헛수고가 되는 이유가 여기에 있습니다.
"매개변수"라는 단어를 사용자 입력으로 오해하지 않습니다
여기서 말하는 매개변수는 사람이 입력한 값이 아니라 프로그램이 윈도우 내부 함수에 넘긴 값입니다. 파일 경로, 디스크 위치 정보, 업데이트 구성 값 같은 것들입니다. 사용자가 뭘 잘못 눌러서 뜨는 코드가 아닙니다.
따라서 첫 질문은 "이 코드가 무슨 뜻이냐"가 아니라 "어떤 작업을 하는 도중에 떴느냐"여야 합니다. 그 한 가지로 아래 네 갈래가 갈립니다.
증상으로 원인 좁히기
이 표에서 자기 줄을 먼저 찾고, 해당 섹션만 처리합니다.
| 증상 | 유력한 원인 | 먼저 볼 항목 |
|---|---|---|
| 외장하드·USB로 복사하다 매번 같은 지점에서 멈춘다 | 파일 시스템 손상, 배드섹터 | 원인 A → 디스크 검사 |
| 복사 시작하자마자 바로 뜬다 (진행률 0%) | 경로 길이 초과, 파일명에 못 쓰는 문자 | 원인 D → 경로 줄이기 |
| 윈도우 업데이트 검색·설치 단계에서 뜬다 | 시스템 파일·구성 요소 저장소 손상 | 원인 B → DISM 먼저 |
| 같은 업데이트만 반복해서 실패한다 | 업데이트 캐시가 꼬임 | 원인 C → 캐시 비우기 |
| 스토어 앱 설치·구매 인증에서만 뜬다 | 날짜·시간 어긋남, 스토어 캐시 손상 | 원인 C → 시간 자동 설정 |
| 복사·설치 어느 쪽이든 대용량일 때만 뜬다 | 대상 드라이브 여유 공간 부족 | 원인 D → 공간 확보 |
같은 지점에서 멈추는지, 아무 데서나 멈추는지가 갈림길입니다
복사가 매번 같은 파일·같은 진행률에서 멈추면 그 자리의 데이터를 못 읽는 것이라 원인 A쪽입니다. 반대로 멈추는 지점이 매번 달라지면 여유 공간이나 드라이버 쪽을 먼저 봅니다.
원인 A대상 드라이브의 파일 시스템이 손상됐다
외장하드·USB 복사 중에 뜬 경우 가장 먼저 확인할 갈래입니다.
파일 시스템은 "어떤 파일이 디스크의 어느 위치에 있다"는 목록입니다. 이 목록이 어긋나면 복사 프로그램이 윈도우에 잘못된 위치 값을 건네게 되고, 그 값을 받은 함수가 그대로 87번을 돌려줍니다. 배드섹터가 있는 경우도 같은 결과가 됩니다.
1대상 드라이브를 읽기 전용으로 먼저 검사
시작 버튼을 우클릭해 터미널(관리자)을 열고 위 명령을 넣습니다. D는 실제 드라이브 문자로 바꿉니다. 옵션 없이 돌리면 고치지는 않고 상태만 보여 주므로, 문제가 있는지 없는지부터 확인할 수 있습니다.
2오류가 나오면 복구 옵션을 붙여 다시 실행
/f는 파일 시스템 오류를 고치고 /r은 배드섹터를 찾아 읽을 수 있는 데이터를 옮깁니다. 용량에 따라 수십 분에서 몇 시간까지 걸리니 중간에 드라이브를 뽑지 않습니다.
3검사가 끝난 뒤 같은 파일을 다시 복사
복구 요약에 "불량 섹터" 항목의 숫자가 0이 아니면 그 드라이브는 이미 물리적으로 상하고 있는 중입니다. 이번에 복사가 되더라도 중요한 자료는 다른 곳에 한 벌 더 두는 편이 안전합니다.
C 드라이브에 걸면 지금 당장은 실행되지 않습니다
윈도우가 사용 중인 드라이브는 잠금을 풀 수 없어서 "다음 재시작 시 검사하도록 예약하시겠습니까"를 묻습니다. Y를 넣고 재부팅하면 부팅 직전에 검사가 진행됩니다.
이 방법이 안 통하는 경우
검사 결과에 "문제를 발견하지 못했습니다"가 나오는데도 같은 오류가 계속 뜨면 디스크 쪽이 아닙니다. 복사가 아니라 업데이트·설치 중에 뜬 경우도 마찬가지입니다. 원인 B로 넘어갑니다.
원인 B시스템 파일과 구성 요소 저장소가 손상됐다
윈도우 업데이트 도중에 뜬 경우의 갈래입니다.
업데이트는 새 파일을 그냥 덮어쓰는 작업이 아니라, 윈도우가 들고 있는 구성 요소 저장소에 부품을 끼워 넣는 작업입니다. 이 저장소의 목록이 실제 파일과 어긋나 있으면 설치 함수가 잘못된 값을 받게 되고 87번이 그대로 올라옵니다.
1구성 요소 저장소부터 복구
터미널(관리자)에서 실행합니다. 20%대에서 한참 멈춘 것처럼 보여도 정상이니 "작업을 완료했습니다"가 나올 때까지 둡니다. 이 명령은 인터넷에서 정상 부품을 받아오므로 연결된 상태여야 합니다.
2그다음에 시스템 파일 검사
순서가 중요합니다. sfc는 구성 요소 저장소의 원본을 가져다 파일을 고치기 때문에, 저장소 자체가 상해 있으면 "손상된 파일을 복구할 수 없습니다"로 끝납니다. DISM을 먼저 돌려야 sfc가 제대로 동작합니다.
3재부팅한 뒤 업데이트를 다시 실행
두 명령 모두 끝난 뒤 한 번 다시 시작하고 업데이트를 눌러 봅니다. 재부팅을 건너뛰면 고쳐 둔 파일이 아직 메모리에 반영되지 않아 같은 코드가 다시 뜰 수 있습니다.
sfc가 "위반 사항을 찾지 못했습니다"로 끝나도 실패가 아닙니다
시스템 파일에는 문제가 없다는 뜻이고, 그 자체가 원인 B를 지웠다는 정보입니다. 이 결과가 나왔다면 원인 C의 캐시 쪽으로 바로 넘어가면 됩니다.
이 방법이 안 통하는 경우
두 명령이 모두 정상 종료됐는데도 같은 업데이트만 계속 실패한다면 파일이 아니라 받아 둔 설치 파일 쪽 문제입니다. 원인 C에서 캐시를 비웁니다.
원인 C업데이트·스토어 캐시가 꼬였거나 날짜·시간이 어긋났다
같은 항목만 반복 실패하거나, 스토어에서만 뜰 때의 갈래입니다.
윈도우는 받아 둔 업데이트 파일을 C:\Windows\SoftwareDistribution 아래에 쌓아 둡니다. 이 폴더에 중간에 끊긴 파일이 남아 있으면 설치 단계에서 계속 그 파일을 집어 들어 같은 코드로 실패합니다.
1업데이트 관련 서비스를 먼저 멈춥니다
net stop bits
서비스가 돌고 있는 상태에서는 폴더 안 파일이 잠겨 있어 지워지지 않습니다. 터미널(관리자)에서 두 줄을 차례로 실행합니다.
2Download 폴더 안의 내용만 비웁니다
탐색기 주소창에 C:\Windows\SoftwareDistribution\Download을 넣고 들어가 안에 있는 내용만 삭제합니다. 폴더 자체는 지우지 않습니다.
3서비스를 다시 켜고 업데이트를 재실행
net start bits
다시 켠 뒤 업데이트를 누르면 파일을 처음부터 새로 받습니다. 용량이 다시 내려오므로 시간이 조금 더 걸립니다.
4스토어에서만 뜬다면 날짜·시간과 저장소를 함께 손봅니다
Win + I → 시간 및 언어 → 날짜 및 시간에서 "자동으로 시간 설정"과 "표준 시간대 자동 설정"을 모두 켭니다. 그래도 계속되면 Win + I → 앱 → 설치된 앱에서 Microsoft Store의 고급 옵션으로 들어가 "복구"를 먼저, 그래도 안 되면 "재설정"을 누릅니다.
시간이 몇 분만 어긋나도 인증서 검사에서 걸립니다. 스토어 설치·구매 확인처럼 서버와 시간을 맞춰야 하는 작업은 이 한 가지 때문에 실패하는 경우가 흔합니다. 메인보드 배터리가 다 된 PC는 껐다 켤 때마다 시간이 되돌아가므로 함께 확인합니다.
이 방법이 안 통하는 경우
캐시를 비우고 시간을 맞췄는데도 대용량 파일에서만 실패하거나 진행률 0%에서 바로 뜬다면 캐시 문제가 아닙니다. 원인 D의 공간·경로 조건을 봅니다.
원인 D여유 공간이 부족하거나 경로가 너무 길다
시작하자마자 뜨거나, 대용량일 때만 뜨는 경우의 갈래입니다. 이 원인은 조작할 창이 따로 없어 글로만 정리합니다.
윈도우의 기본 경로 길이 제한은 260자입니다. 폴더를 깊게 만든 상태에서 다시 하위 폴더째 복사하면 옮겨진 쪽 경로가 이 한도를 넘고, 그 순간 경로 값이 잘못된 값으로 취급돼 87번이 돌아옵니다. 진행률이 0%인데 바로 창이 뜨는 경우가 대표적입니다.
1대상 폴더를 드라이브 최상단으로 옮겨 시험합니다
복사할 폴더를 D:\temp처럼 짧은 경로에 두고 다시 복사해 봅니다. 여기서 되면 경로 길이가 원인이 맞습니다.
2대상 드라이브의 여유 공간을 확인합니다
Win + I → 시스템 → 저장소에서 남은 용량을 봅니다. 윈도우는 작업 파일을 만들 자리가 필요해서 전체의 10~15% 정도는 비워 두는 편이 안전합니다. 부족하면 정리 권장 사항에서 임시 파일부터 지웁니다.
3파일 시스템 형식이 4GB 한도에 걸리는지 봅니다
USB 메모리가 FAT32로 되어 있으면 파일 하나가 4GB를 넘는 순간 복사가 막힙니다. 드라이브를 우클릭해 속성에서 파일 시스템을 확인하고, FAT32라면 자료를 옮긴 뒤 NTFS나 exFAT로 포맷합니다.
포맷은 자료를 옮긴 뒤에만 합니다
파일 시스템을 바꾸는 작업은 안에 있던 자료를 지웁니다. 4GB 한 파일만 문제라면 압축 프로그램의 분할 압축으로 나눠 옮기는 방법이 먼저입니다.
이 방법이 안 통하는 경우
경로를 짧게 하고 공간도 넉넉한데 계속 실패하면 저장장치 드라이버 쪽을 봅니다. Win + R → devmgmt.msc → 디스크 드라이브에서 해당 장치의 드라이버를 업데이트하거나, USB 외장하드라면 다른 포트·다른 케이블로 바꿔 봅니다. 그다음은 아래 진단 섹션입니다.
어느 단계에서 실패했는지 확인하는 법
추측 대신 기록을 봅니다. 네 갈래 중 어디인지 여기서 확정됩니다.
0x80070057은 어떤 작업이 실패했는지를 알려 주지 않기 때문에, 시스템이 남긴 기록을 직접 열어 보는 편이 훨씬 빠릅니다. 확인할 곳은 두 군데입니다.
1이벤트 뷰어의 시스템 로그를 오류만 남겨 봅니다
Win + R → eventvwr.msc → Windows 로그 → 시스템으로 들어가 오른쪽의 현재 로그 필터링에서 수준을 오류로 좁힙니다. 오류가 뜬 시각 근처의 원본(Source)이 disk·Ntfs·volmgr이면 원인 A, WindowsUpdateClient·CBS면 원인 B·C입니다.
2업데이트 기록에서 실패한 항목의 이름을 확인합니다
Win + I → Windows 업데이트 → 업데이트 기록에서 실패한 항목 옆에 붙은 코드와 KB 번호를 봅니다. 같은 KB만 반복 실패하면 원인 C의 캐시 쪽, 여러 항목이 함께 실패하면 원인 B의 저장소 손상 쪽입니다.
3구성 요소 저장소 상태만 빠르게 확인하고 싶다면
고치지 않고 검사만 합니다. "구성 요소 저장소가 복구 가능합니다"가 나오면 원인 B가 맞으므로 /RestoreHealth로 넘어가고, "손상이 검색되지 않았습니다"면 원인 B를 지우고 C·D를 봅니다.
오류가 뜬 시각을 먼저 적어 두면 로그 읽기가 훨씬 쉬워집니다
이벤트 뷰어에는 하루에도 수백 줄이 쌓입니다. 창이 뜬 시각을 분 단위로 기억해 두면 그 앞뒤 1분만 보면 되고, 관련 없는 경고에 시간을 쓰지 않게 됩니다.
자주 묻는 질문
위 네 갈래를 진행하면서 자주 걸리는 지점입니다.
Q.chkdsk를 돌리면 데이터가 지워지나요?
A.지우는 명령이 아니라 파일 시스템의 목록을 실제 상태에 맞게 고치는 명령입니다. 다만 이미 못 읽는 상태였던 조각은 복구 과정에서 잘려 나갈 수 있고, 그렇게 떼어 낸 조각은 드라이브 최상단의 FOUND.000 폴더에 남기도 합니다. 중요한 자료는 먼저 다른 곳에 복사해 두는 편이 안전합니다.
Q.DISM과 sfc를 꼭 둘 다 해야 하나요?
A.sfc만으로 끝나는 경우도 있습니다. 다만 sfc가 "일부 손상된 파일을 복구할 수 없습니다"로 끝났다면 복구에 쓸 원본 자체가 상한 것이므로 DISM으로 원본을 먼저 고쳐야 합니다. 순서를 DISM → sfc로 두면 이 되돌이표를 피할 수 있습니다.
Q.외장하드가 아니라 내장 SSD에서도 같은 코드가 뜨나요?
A.뜹니다. 원인 갈래와 조치도 같고 드라이브 문자만 바꾸면 됩니다. 다만 윈도우가 들어 있는 드라이브는 검사를 예약한 뒤 재부팅해야 실행된다는 점만 다릅니다.
Q.스토어 앱 설치에서만 계속 뜹니다.
A.날짜·시간 자동 설정을 켠 뒤에도 계속되면 Win + I → 앱 → 설치된 앱에서 Microsoft Store의 고급 옵션으로 들어가 복구를 먼저 누릅니다. 복구는 설정을 지우지 않고, 그래도 안 될 때 재설정으로 넘어갑니다.
Q.백업 프로그램이나 파티션 도구에서 떠도 같은 방법인가요?
A.같은 반환값이라 갈래는 같습니다. 다만 이 경우에는 대상 드라이브의 파일 시스템 형식과 여유 공간을 먼저 봅니다. 원본과 대상의 섹터 크기가 다르거나 대상이 더 작을 때도 이 코드로 끝나는 경우가 있습니다.
함께 보면 좋은 글
같은 조치를 쓰지만 갈래가 다른 오류들입니다.
0x80070570 파일이나 디렉터리가 손상되어 읽을 수 없습니다 복사가 특정 파일에서만 멈출 때 함께 보는 갈래입니다 · 눌러서 확인하기 → 윈도우 업데이트 오류 0x80070002 해결 순서 업데이트 캐시를 비우는 조치가 겹치는 오류입니다 · 눌러서 확인하기 → 윈도우 업데이트 오류 0x80070005 액세스 거부 해결 순서 같은 0x8007 계열이지만 권한 쪽으로 갈래가 갈리는 경우입니다 · 눌러서 확인하기 →참고 문서 · Microsoft Learn — 시스템 오류 코드 (0-499), ERROR_INVALID_PARAMETER 87 (0x57)




