- 공유 링크 만들기
- X
- 이메일
- 기타 앱
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 DISM 실행 중 0x800f0954 오류가 발생할 때, WSUS(사내 업데이트 서버) 정책 때문에 Windows 기능(.NET Framework 3.5, RSAT, 언어팩, OpenSSH 등) 설치가 막히는 원인을 정확히 분리하고, 레지스트리로 WSUS를 일시 우회하여 정상 설치 후 원복하는 절차를 현장에서 그대로 따라 할 수 있게 정리하는 것이다.
1. 0x800f0954 오류의 핵심 원인
0x800f0954는 “선택적 구성 요소(Features on Demand) 설치 시 필요한 파일을 가져올 경로를 찾지 못한다”는 성격의 오류로 나타나는 경우가 많다.
도메인 가입 PC 또는 과거에 기업 정책이 적용된 PC에서 Windows Update가 Microsoft 업데이트로 직접 나가지 못하고 WSUS로만 향하도록 강제되어 있을 때, WSUS에 해당 구성 요소 콘텐츠가 없거나 승인되지 않으면 설치가 실패할 수 있다.
특히 제어판의 “Windows 기능 켜기/끄기”, DISM의 /Enable-Feature, PowerShell의 Add-WindowsCapability가 같은 경로(WSUS)로 막히면서 동일 오류가 재현되기 쉽다.
주의 : 이 문제는 “업데이트 자체”가 아니라 “선택적 기능 설치 경로”가 WSUS로 고정되어 생기는 경우가 많다. 누적 업데이트가 정상이어도 .NET 3.5 같은 기능 설치는 실패할 수 있다.
2. 적용 전 확인해야 할 범위
2.1 영향받는 대표 기능
오류 0x800f0954는 아래 작업에서 자주 나타나다.
| 구분’’ | 예시 | 증상 |
|---|---|---|
| .NET 기능 | .NET Framework 3.5(NetFx3) | DISM/Windows 기능 설치 실패 |
| 관리 도구 | RSAT, 서버 관리 도구 | Add-WindowsCapability 실패 |
| 언어·FOD | 언어 팩, 음성, 글꼴, OCR 구성 요소 | 설치 다운로드 단계에서 실패 |
| 기타 | OpenSSH Server/Client 등 | 0x800f0954 또는 유사 코드로 실패 |
2.2 WSUS 정책이 남아 있는지 확인하는 방법
가장 단순한 확인은 레지스트리 정책 경로에 WSUS 관련 값이 존재하는지 보는 것이다.
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" 아래 값이 보이면 WSUS 경유가 강제되는 상태일 가능성이 높다.
| 값 이름 | 의미 | 참고 |
|---|---|---|
| WUServer | WSUS 서버 주소 | 정책 기반으로 강제될 수 있다. |
| WUStatusServer | 상태 보고 서버 주소 | WSUS와 동일 또는 별도일 수 있다. |
| UseWUServer | WSUS 사용 여부 | 1이면 WSUS 사용, 0이면 직접 업데이트로 전환될 수 있다. |
주의 : 도메인 환경에서는 그룹 정책이 주기적으로 다시 값을 덮어쓸 수 있다. “일시 우회 후 설치” 목적이라면 설치 작업이 끝난 즉시 원복하는 운영이 안전하다.
3. 해결 1순위: WSUS 일시 우회 레지스트리 설정(가장 많이 쓰는 방법)
핵심은 UseWUServer 값을 0으로 바꾸고 Windows Update 서비스(wuauserv)를 재시작하여, 선택적 기능 설치가 Microsoft 업데이트 경로로 나가도록 만드는 것이다.
3.1 안전한 진행 순서(백업 포함)
관리자 권한 PowerShell 또는 CMD에서 아래 순서로 진행하는 것이 안정적이다.
3.2 명령어로 즉시 적용하는 방법(권장)
:: 1) WSUS 정책 키 백업(선택이지만 권장) reg export "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" "%USERPROFILE%\Desktop\WindowsUpdate_Policy_Backup.reg" /y
:: 2) UseWUServer 값을 0으로 설정
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v UseWUServer /t REG_DWORD /d 0 /f
:: 3) Windows Update 서비스 재시작(필수)
net stop wuauserv
net start wuauserv
일부 환경에서는 BITS도 함께 재시작하면 안정적이다.
net stop bits net start bits 주의 : UseWUServer 값만 바꾸고 서비스를 재시작하지 않으면 정책이 메모리에 남아 동일 오류가 지속될 수 있다.
3.3 DISM로 기능 설치 실행 예시
대표적으로 .NET Framework 3.5를 설치할 때 아래 명령이 많이 쓰인다.
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All 현장에서는 “원본을 ISO로 지정”하는 방식이 더 확실한 경우가 많다. Windows 설치 ISO를 마운트한 뒤 드라이브 문자를 확인하고 SxS 경로를 지정한다.
:: 예시: ISO가 D:로 마운트된 경우 DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /Source:D:\sources\sxs /LimitAccess /LimitAccess는 외부 다운로드를 차단하고 지정한 /Source만 사용하도록 제한하는 옵션이다.
네트워크가 차단된 구역, 프록시가 강한 환경, WSUS 우회를 해도 외부로 못 나가는 환경에서는 /Source 방식이 성공률이 높다.
3.4 설치 성공 후 반드시 원복하는 방법
기업 환경에서는 업데이트 경로를 임의로 바꾸면 보안 운영 정책과 충돌할 수 있으므로, 설치 완료 후 원복하는 절차가 필요하다.
원복은 UseWUServer 값을 1로 되돌리고 서비스를 재시작하면 된다.
:: 원복 reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v UseWUServer /t REG_DWORD /d 1 /f
net stop wuauserv
net start wuauserv
주의 : 도메인 그룹 정책이 강제되는 환경에서는 원복을 하지 않아도 일정 시간이 지나면 자동으로 1로 덮어써질 수 있다. 다만 “언제 원복될지”는 환경마다 달라 운영 리스크가 생기므로 수동 원복을 권장한다.
4. 해결 2순위: 로컬 그룹 정책에서 “WSUS 대신 Microsoft 업데이트 직접 사용” 허용
레지스트리 우회는 즉효가 강점이지만, 반복적으로 발생하는 조직이라면 정책으로 정리하는 편이 운영이 쉽다.
4.1 설정 위치
로컬 정책 편집기에서 아래 경로를 찾는다.
gpedit.msc 컴퓨터 구성 └ 관리 템플릿 └ 시스템 └ 선택적 구성 요소 설치 및 구성 요소 복구에 대한 설정 지정 4.2 권장 설정 값
해당 정책을 “사용”으로 두고, 아래 옵션을 체크하는 방식이 일반적이다.
| 항목 | 권장 값 | 설명 |
|---|---|---|
| 정책 상태 | 사용 | 선택적 구성 요소 설치 시 동작을 제어한다. |
| 복구 콘텐츠 다운로드 | WSUS 대신 Windows Update에 직접 연결 | WSUS에 콘텐츠가 없어도 Microsoft 경로를 허용한다. |
| 대체 원본 경로 | 필요 시 지정 | 사내 파일 서버 또는 ISO 경로를 표준화할 때 사용한다. |
정책 적용 후에는 아래 명령으로 즉시 정책을 갱신하는 것이 좋다.
gpupdate /force 주의 : 도메인 정책이 우선하는 환경에서는 로컬 정책이 무시될 수 있다. 이 경우 도메인 GPO에서 동일 항목을 설정해야 한다.
5. 실패 시 분기 처리: “우회”가 맞는데도 안 될 때 점검 포인트
5.1 프록시·SSL 검사 장비·보안 에이전트 영향
UseWUServer를 0으로 바꿔도 외부 업데이트로 나가는 경로가 네트워크에서 차단될 수 있다.
이 경우 /Source로 ISO SxS를 지정하는 설치가 현실적인 대안이다.
5.2 서비스 상태 및 필수 서비스 점검
Windows Update 관련 서비스가 비정상일 때도 구성 요소 설치가 실패할 수 있다.
최소한 아래 서비스는 “중지 불가/실행 가능” 상태여야 한다.
| 서비스 | 서비스 이름 | 역할 |
|---|---|---|
| Windows Update | wuauserv | 업데이트 및 선택적 구성 요소 다운로드 경로의 핵심이다. |
| Background Intelligent Transfer | bits | 다운로드 전송에 관여하다. |
| Cryptographic Services | cryptsvc | 서명 검증과 카탈로그 처리에 필요하다. |
5.3 동일 증상이 반복될 때 “정책 잔재” 정리 전략
장비가 도메인에서 탈퇴했는데도 계속 WSUS 레지스트리가 남아 있으면, 기능 설치 때마다 문제를 만든다.
이 경우 “정책 잔재를 관리적으로 제거”하되, 조직 운영 기준에 맞춰야 한다.
일시 해결만 목적이라면 삭제보다 값 원복이 안전하다.
6. 실무용 표준 절차(운영 문서에 그대로 붙이는 용도)
현장에서 재현률이 높은 표준 절차를 한 번에 정리하면 아래와 같다.
| 단계 | 작업 | 명령/경로 | 성공 기준 |
|---|---|---|---|
| 1 | 정책 존재 확인 | HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU | UseWUServer, WUServer 존재 여부 확인하다. |
| 2 | 정책 백업 | reg export ... | 백업 reg 파일이 생성되다. |
| 3 | WSUS 우회 | UseWUServer=0 설정 | reg query에서 0으로 보이다. |
| 4 | 서비스 재시작 | net stop/start wuauserv | 서비스가 정상 기동하다. |
| 5 | 기능 설치 | DISM /Enable-Feature ... | 오류 없이 완료 100%가 표시되다. |
| 6 | 원복 | UseWUServer=1, 서비스 재시작 | 정책이 정상 운영 상태로 돌아가다. |
7. 자주 쓰는 명령 모음(복사-붙여넣기용)
7.1 WSUS 우회 적용 + .NET 3.5 설치 + 원복 일괄 예시
:: (관리자 CMD)
:: 백업(선택)
reg export "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" "%USERPROFILE%\Desktop\WindowsUpdate_Policy_Backup.reg" /y
:: 우회
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v UseWUServer /t REG_DWORD /d 0 /f
net stop wuauserv
net start wuauserv
:: 설치(온라인)
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
:: 원복
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v UseWUServer /t REG_DWORD /d 1 /f
net stop wuauserv
net start wuauserv
7.2 ISO 소스 기반 .NET 3.5 설치 예시
:: (관리자 CMD) :: ISO 마운트 후 드라이브 문자를 D:라고 가정하다.
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /Source:D:\sources\sxs /LimitAccess
주의 : /Source 경로가 OS 빌드와 맞지 않으면 실패할 수 있다. 설치 ISO는 대상 PC의 Windows 버전과 동일 계열(예: 22H2, 23H2 등)로 준비하는 것이 안전하다.
FAQ
UseWUServer 값을 0으로 바꿨는데도 0x800f0954가 계속 뜨는 이유는 무엇인가?
서비스 재시작을 하지 않으면 정책이 즉시 반영되지 않을 수 있다. 또한 외부 업데이트 경로가 네트워크에서 차단되어 있으면 우회 자체가 의미가 없어지므로 /Source 방식으로 전환하는 것이 합리적이다.
도메인 PC에서 원복을 꼭 해야 하는 이유는 무엇인가?
조직 정책상 업데이트 경로를 WSUS로 통제하는 이유가 감사, 대역폭, 패치 검증, 승인 프로세스에 있기 때문이다. 기능 설치만을 위해 일시 우회했으면 설치 직후 원복하여 운영 정책과 충돌을 줄이는 것이 안전하다.
레지스트리 값을 삭제해도 되는가?
삭제는 환경에 따라 의도치 않은 정책 상태가 될 수 있어 권장하지 않다. 단기 해결 목적이면 0으로 변경 후 설치하고 1로 되돌리는 방식이 가장 보수적이다.
DISM 대신 PowerShell로 설치해도 같은 문제인가?
대부분 같은 다운로드 경로를 사용하므로 동일 오류가 재현될 수 있다. 원인이 WSUS 경로 고정이라면 도구를 바꿔도 결과가 같을 수 있다.
사내에서 Microsoft 업데이트 직접 접속이 금지된 환경이라면 어떻게 해야 하는가?
ISO의 sources\sxs 또는 사내 파일 서버에 정식 FOD 소스를 구축해 /Source로 설치하는 방식이 적합하다. 이 방식은 외부망 없이도 구성 요소 설치가 가능하다.
- 공유 링크 만들기
- X
- 이메일
- 기타 앱