- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 Windows 업데이트 또는 DISM 실행 시 CBS 로그에 0x800f0831 오류와 함께 패키지 누락 메시지가 기록되는 경우, 실제 CBS.log 분석부터 누락된 패키지 복구 및 DISM 소스 지정까지 전 과정을 체계적으로 정리하여 실무에서 그대로 따라 할 수 있는 해결 절차를 제공하는 것이다.
1. 오류 0x800f0831 의미와 전형적인 증상
오류 코드 0x800f0831은 CBS_E_STORE_CORRUPTION에 해당하며, 구성 요소 저장소(Component Store)에 필요한 매니페스트 또는 패키지 정보가 누락되었을 때 주로 나타나는 오류이다.
실제 환경에서는 다음과 같은 상황에서 자주 발생한다.
- Windows 누적 업데이트(KB 패치) 설치 실패
- .NET Framework 3.5(NetFx3) 기능 켜기/끄기 실패
- DISM
/RestoreHealth실행 시 중간에 실패하면서 CBS 로그에 0x800f0831 기록 - 서버에서 역할/기능 추가 시 설치가 진행되지 않고 0x800f0831 반환
Windows 업데이트 UI에서는 주로 “일부 업데이트를 설치하는 동안 문제가 발생했습니다. 오류 0x800f0831”과 같은 메시지로 표시되고, 자세한 원인은 CBS 로그를 열어봐야 확인할 수 있다.
1.1 CBS 로그에 기록되는 대표 메시지 형태
CBS.log에는 대략 다음과 비슷한 형태의 메시지가 남는 경우가 많다.
Failed to resolve package <Missing_Package> [HRESULT = 0x800f0831 - CBS_E_STORE_CORRUPTION] WER: Generating failure report for package: <Failed_Package> status: 0x800f0831 여기서 <Failed_Package>는 설치에 실패한 패키지, <Missing_Package>는 실제로 시스템에 필요한데 누락된 패키지를 의미한다. 이 누락된 패키지를 어떤 방식으로 복원하느냐가 핵심이다.
2. CBS 로그에서 누락된 패키지 식별하기
0x800f0831은 CBS 로그를 통해 원인을 분석하는 것이 첫 단계이다. 로그에서 어떤 패키지를 찾지 못해 실패하는지 파악해야 이후 단계(수동 KB 설치, DISM 소스 지정 등)를 진행할 수 있다.
2.1 CBS 로그 파일 위치 및 사본 만들기
C:\Windows\Logs\CBS폴더로 이동한다.CBS.log파일을 바탕화면이나 다른 폴더에 복사하여 분석용 사본을 만든다.- 기본 메모장보다는 Notepad++, Visual Studio Code 등 대용량 로그에 적합한 편집기를 사용하는 것이 좋다.
2.2 명령줄에서 0x800f0831 관련 구간만 추출하기
필요한 부분만 빠르게 추출하기 위해 명령 프롬프트(관리자)를 열고 다음 명령을 실행한다.
cd /d C:\Windows\Logs\CBS findstr /i /c:"0x800f0831" CBS.log > C:\Temp\CBS_0x800f0831.txt 이렇게 생성된 C:\Temp\CBS_0x800f0831.txt 파일을 열어 보면, 오류 코드와 함께 패키지 이름이 붙어 있는 줄을 확인할 수 있다.
2.3 누락 패키지 패턴 읽는 요령
로그에서 흔히 보이는 패키지 패턴은 다음과 같다.
KB번호가 드러나는 경우: 예)Package_for_KB5016629~31bf3856ad364e35~amd64~~...- 기능/역할 이름이 드러나는 경우: 예)
Microsoft-Windows-NetFx3-OnDemand-Package~31bf3856ad364e35... - 특정 기능 모듈:
Microsoft-Windows-MSMQ-...,Microsoft-Windows-HyperV-...등
여기에서 실제로 필요한 조치는 크게 두 가지이다.
- KB 번호가 보이면 해당 KB 패키지를 수동으로 다운로드하여 설치한다.
- NetFx3 등 기능 OnDemand 패키지인 경우, Windows 설치 미디어의
\sources\sxs폴더를 소스로 사용해 기능을 다시 등록한다.
3. 기본 복구: DISM과 SFC로 구성 요소 저장소 점검
누락 패키지를 직접 건드리기 전에, 우선 DISM과 SFC로 구성 요소 저장소와 시스템 파일을 점검·복구하는 것이 좋다.
3.1 관리자 권한 명령 프롬프트 열기
- 시작 버튼을 우클릭한다.
- Windows 터미널(관리자) 또는 명령 프롬프트(관리자)를 선택한다.
3.2 DISM 기본 3단계 점검
관리자 창에서 순서대로 다음 명령을 실행한다.
DISM /Online /Cleanup-Image /ScanHealth DISM /Online /Cleanup-Image /CheckHealth DISM /Online /Cleanup-Image /RestoreHealth /ScanHealth: 구성 요소 저장소 손상 여부를 자세히 스캔한다./CheckHealth: 이전 스캔 결과를 기반으로 손상 여부를 빠르게 확인한다./RestoreHealth: Windows Update 또는 지정된 소스를 이용해 손상된 구성 요소를 복구한다.
3.3 SFC(System File Checker) 추가 실행
DISM이 완료되면 시스템 파일 검사를 진행한다.
sfc /scannow 검사 완료 후 “손상된 파일을 성공적으로 복구했습니다”가 나오면 시스템 파일 수준의 문제는 해결된 것이다. 그 뒤 PC를 재부팅하고 다시 업데이트 또는 기능 설치를 시도한다.
4. CBS 로그 기반 누락 패키지 수동 복원
DISM과 SFC로 해결되지 않고 CBS 로그에 여전히 0x800f0831과 누락 패키지가 기록된다면, 실제 누락된 패키지를 지정해 수동 복원해야 한다.
4.1 누락된 KB 패키지 수동 설치
로그에서 Package_for_KBxxxxxxx 형태로 KB 번호가 확인되는 경우 다음과 같은 절차를 따른다.
- 웹 브라우저에서 Microsoft Update Catalog 사이트로 이동한다.
- 검색창에 CBS 로그에서 확인한 KB 번호(예: KB5016629)를 입력하고 검색한다.
- 사용 중인 OS 버전(Windows 10, Windows 11, Server 2022 등)과 아키텍처(x64, ARM64 등)에 맞는 항목을 선택한다.
- Download 버튼을 눌러
.msu패키지를 다운로드한다. - 다운로드가 완료되면 파일을 더블 클릭하여 설치를 진행한다.
- 재부팅 후 Windows 업데이트를 다시 수행한다.
winver 명령으로 현재 빌드를 확인한 뒤, Catalog에서 동일 버전용 패키지를 선택해야 한다.4.2 NetFx3(OnDemand) 패키지 누락 시 재등록
CBS 로그에 Microsoft-Windows-NetFx3-OnDemand-Package 또는 비슷한 문자열이 보이는 경우 .NET Framework 3.5 기능 패키지가 제대로 존재하지 않거나, 온라인 소스에 접근하지 못해 설치가 실패하는 상황일 가능성이 높다.
이 경우 Windows 설치 ISO를 소스로 사용하여 기능을 다시 등록한다.
- 현재 설치된 Windows와 같은 버전·에디션 ISO를 준비한다.
- ISO를 마운트하면 드라이브 문자(예:
D:)가 생성된다. - 관리자 명령 프롬프트에서 다음 명령을 실행한다.
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All ^ /LimitAccess /Source:D:\sources\sxs D:는 실제 ISO가 마운트된 드라이브 문자로 변경한다./LimitAccess는 Windows Update를 사용하지 않고 지정한 소스만 사용하겠다는 의미이다.
명령이 100%까지 완료되면 시스템을 재부팅하고 다시 업데이트나 기능 설치를 시도한다.
4.3 DISM에서 소스 파일을 찾지 못할 때(0x800f081f 동반)
구성 요소 손상이 심한 경우 DISM /RestoreHealth 실행 시 0x800f0831과 함께 0x800f081f(소스 파일을 찾을 수 없음) 오류가 함께 나타나는 경우가 있다.
이럴 때는 다음 순서대로 확인한다.
- 현재 Windows 버전과 빌드 확인(
winver실행). - 동일 또는 그보다 약간 높은 빌드의 설치 ISO를 준비한다.
- ISO를 마운트한 뒤,
install.wim또는install.esd에서 정확한 에디션 Index를 확인한다. - 그 Index를 사용해 다음과 같이 DISM을 실행한다.
Dism /Online /Cleanup-Image /RestoreHealth ^ /Source:wim:D:\sources\install.wim:3 /LimitAccess D:는 실제 상황에 맞게 조정한다.install.esd만 있는 경우/Source:esd:...형태로 사용하거나, 사전에 WIM으로 변환하여 사용하는 방법도 있다.
그래도 복구되지 않는다면, 동일 빌드의 건강한 다른 PC에서 CBS 로그에 기록된 파일을 추출해 교체하는 고급 절차가 필요할 수 있고, 일반 사용자에게는 인플레이스 업그레이드(제자리에 다시 설치)가 더 현실적인 선택일 수 있다.
5. Windows 업데이트 구성요소 초기화
누락 패키지 문제와 함께 Windows 업데이트 캐시가 꼬여 있는 경우도 많기 때문에, 구성요소를 초기화하는 작업을 한 번 진행하는 것이 좋다.
5.1 서비스 중지 및 캐시 폴더 이름 변경
관리자 명령 프롬프트에서 순서대로 다음 명령을 실행한다.
net stop wuauserv net stop cryptSvc net stop bits net stop msiserver
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old
net start wuauserv
net start cryptSvc
net start bits
net start msiserver
이 절차는 Windows 업데이트 캐시 폴더를 새로 만들도록 강제하여, 손상된 다운로드 파일이나 메타데이터로 인한 충돌을 제거한다.
6. 도메인·기업 환경에서 0x800f0831 점검 포인트
기업 또는 도메인 환경에서는 WSUS, 프록시, 방화벽 정책 때문에 클라이언트가 필요한 업데이트 원본에 접속하지 못해 0x800f0831이 발생하는 경우도 있다.
- WSUS에서 특정 업데이트(누적 업데이트, .NET, SSU 등)가 승인되지 않았거나, 일부 서버만 배포되어 있는지 확인한다.
- 클라이언트가 인터넷의 Microsoft 업데이트 서버에 직접 나가지 못하도록 차단된 환경인지 확인한다.
- 프록시 서버를 사용 중이면,
*.windowsupdate.com,*.update.microsoft.com등 관련 도메인이 허용되어 있는지 검토한다. - 그룹 정책에서 “소스 위치 지정” 옵션을 잘못 구성하여, 실제로 존재하지 않는 UNC 경로만 바라보는 설정이 되어 있지 않은지 확인한다.
기업 환경에서는 단순히 클라이언트 측에서만 문제를 해결하려 하지 말고, WSUS/방화벽 담당자와 협의하여 누락된 패키지를 어디에서 가져와야 하는지 먼저 명확히 하는 것이 중요하다.
7. 0x800f0831 CBS 로그 분석 기반 원인 추적 체크리스트
아래 표는 CBS 로그에 0x800f0831이 기록될 때 점검해야 할 항목을 정리한 체크리스트이다. 실제 현장에서 순서대로 확인하면서 원인을 좁혀갈 때 활용할 수 있다.
| 순서 | 점검 항목 | 확인 방법 | 명령·도구 | 비고 |
|---|---|---|---|---|
| 1 | Windows 버전·빌드 확인 | winver 실행 후 빌드 번호 기록 | 실행 창 > winver | 이후 ISO 선택 시 기준값으로 사용 |
| 2 | CBS 로그에서 0x800f0831 구간 추출 | findstr로 관련 줄만 별도 파일로 저장 | findstr /i "0x800f0831" | 패키지 이름과 KB 번호 확인 |
| 3 | 누락 패키지 유형 분류 | KB 패키지인지, NetFx3 등 기능 패키지인지 분류 | 텍스트 편집기 | 대응 전략(수동 KB 설치 vs DISM 소스) 결정 |
| 4 | DISM /RestoreHealth 기본 복구 | 온라인 소스로 손상 복구 시도 | DISM /Online /Cleanup-Image /RestoreHealth | 추가 오류 코드(0x800f081f 등) 함께 기록 여부 확인 |
| 5 | SFC 시스템 파일 검사 | 시스템 파일 손상 여부 확인 후 복구 | sfc /scannow | 필요 시 2~3회 반복 실행 |
| 6 | KB 패키지 수동 설치 | Microsoft Update Catalog에서 KB 검색 후 설치 | 웹 브라우저 | OS 버전·아키텍처 일치 필수 |
| 7 | NetFx3 등 OnDemand 기능 복구 | Windows ISO의 \sources\sxs를 소스로 기능 재등록 | DISM /Enable-Feature /Source | ISO 버전은 현재 빌드와 동일 또는 근접해야 함 |
| 8 | DISM 소스 직접 지정 | install.wim 또는 install.esd에서 적절한 Index 사용 | /Source:wim:...:Index /LimitAccess | 0x800f081f 동반 시 필수 단계 |
| 9 | Windows 업데이트 구성요소 초기화 | SoftwareDistribution, Catroot2 폴더 재생성 | net stop, ren, net start | 업데이트 캐시 문제 제거 |
| 10 | 도메인·WSUS·프록시 정책 점검 | 업데이트 소스에 접근 가능한지 관리자와 확인 | 그룹 정책, WSUS 콘솔 | 기업 환경에서 특히 중요 |
| 11 | 인플레이스 업그레이드 고려 | 모든 방법으로도 해결 불가할 때 선택 | 설치 ISO 실행 > “개인 파일 및 앱 유지” | 시작 전 전체 백업 권장 |
FAQ
Q1. DISM /RestoreHealth를 실행해도 계속 0x800f0831이 발생한다. 다음 단계는 무엇인가?
우선 CBS.log에서 어떤 패키지가 누락되었다고 나오는지 정확히 확인해야 한다. 특정 KB 패키지라면 Microsoft Update Catalog에서 해당 KB를 직접 다운로드하여 설치한 뒤 다시 DISM을 실행한다. NetFx3 등 기능 패키지라면, 현재 빌드와 동일한 Windows ISO를 마운트하고 /Source:wim:D:\sources\install.wim:Index /LimitAccess 형태로 소스를 명시해야 한다. 그래도 해결되지 않으면, 인플레이스 업그레이드를 통해 시스템을 제자리 재설치하는 것이 현실적인 대안이 된다.
Q2. CBS 로그가 너무 커서 열리거나 검색하는 데 시간이 오래 걸린다.
C:\Windows\Logs\CBS\CBS.log 파일을 바로 열지 말고, 먼저 다른 폴더(예: C:\Temp)로 복사한 뒤 사본을 열어야 한다. 또한 findstr 명령으로 0x800f0831 관련 줄만 별도 파일로 추출하는 것이 효율적이다. 메모장 대신 Notepad++, VS Code처럼 대용량 로그 처리에 적합한 편집기를 사용하는 것도 도움이 된다.
Q3. 오프라인 서버 환경에서 0x800f0831이 발생할 때 어떤 점을 주의해야 하나?
인터넷에 직접 연결되지 않은 서버에서는 Windows Update를 소스로 사용할 수 없으므로, 반드시 내부에서 접근 가능한 설치 미디어나 WIM/ESD 이미지를 준비해야 한다. DISM 실행 시 /Source와 /LimitAccess를 함께 사용하여 해당 미디어에서만 파일을 가져오도록 설정한다. 또한 WSUS를 사용한다면, 필요한 누적 업데이트와 기능 패키지가 WSUS에 동기화·승인되어 있는지 별도로 확인해야 한다.
Q4. CBS 로그에 나오는 패키지 이름이 너무 길고 KB 번호가 보이지 않을 때는 어떻게 해야 하나?
패키지 이름 끝에 빌드 번호가 포함된 경우가 많으므로, 그 번호를 기준으로 해당 빌드에 대응하는 누적 업데이트 KB를 역추적할 수 있다. 예를 들어 19041.xxxx 형태라면 Windows 10 2004/20H2 계열 누적 업데이트 목록에서 동일 빌드를 제공하는 KB를 찾아 수동 설치해 볼 수 있다. 이 과정이 복잡하다면, 차라리 최신 누적 업데이트를 직접 내려받아 설치하거나 인플레이스 업그레이드로 OS를 최신 빌드로 올리는 편이 더 간단한 경우도 많다.
Q5. 인플레이스 업그레이드를 고려해야 하는 기준은 무엇인가?
다음 조건 중 두 가지 이상에 해당한다면 인플레이스 업그레이드를 진지하게 고려해야 한다. ① DISM과 SFC를 여러 차례 실행해도 손상이 남아 있는 경우, ② CBS 로그에 여러 패키지에서 0x800f0831이 반복 기록되는 경우, ③ 누락 패키지를 수동 설치했음에도 새로운 누락 패키지가 계속 나타나는 경우, ④ OS 버전이 이미 오래되어 최신 누적 업데이트나 기능 업데이트가 반복해서 실패하는 경우 등이다. 인플레이스 업그레이드는 앱과 데이터를 유지한 채 시스템 파일을 통째로 다시 설치하는 방법이므로, 사전 백업만 확실히 한다면 장기적으로 가장 깔끔한 해결책이 될 수 있다.