윈도우10·11 .NET 3.5 설치 오류 0x800f0950 완전 해결 가이드

이 글의 목적은 윈도우10·11에서 .NET Framework 3.5 기능 활성화 중 발생하는 오류 코드 0x800f0950의 원인을 체계적으로 정리하고, 현장에서 바로 적용할 수 있는 단계별 해결 방법을 제공하는 것이다.

1. .NET 3.5와 오류 0x800f0950 개요

.NET Framework 3.5는 .NET 2.0, 3.0을 포함하는 레거시 프레임워크이며, 오래된 업무용 프로그램이나 보안 솔루션, 금융·행정 사이트용 클라이언트 프로그램 등에서 여전히 필수 구성 요소로 요구되는 경우가 많다.

윈도우10·11에서는 기본적으로 .NET 4.x가 설치되어 있지만, 3.5는 “Windows 기능 켜기/끄기”에서 별도 활성화해야 하는 기능이다. 이때 설치 과정에서 다음과 같이 실패하면서 오류 코드 0x800f0950이 발생하는 경우가 있다.

  • .NET Framework 3.5(포함 .NET 2.0 및 3.0)를 선택 후 설치 시도 시 실패한다.
  • DISM 또는 PowerShell로 NetFx3 기능 활성화 시도 시 실패한다.
  • 오프라인/폐쇄망 환경에서 설치 시도 시 “필수 파일을 찾을 수 없음”과 함께 0x800f0950이 발생한다.

오류 0x800f0950은 대체로 다음 범주 중 하나에 해당하는 원인으로 발생한다.

  • Windows 업데이트 또는 컴포넌트 저장소 손상으로 인한 기능 설치 실패이다.
  • 설치 원본 파일(SxS 폴더) 누락 또는 윈도우 빌드 불일치이다.
  • WSUS/그룹 정책으로 인한 기능 설치 원본 제한이다.
  • 언어팩·에디션이 다른 ISO를 원본으로 사용한 경우이다.
  • 이전 실패 기록 및 보류 중인 작업(pending)이 남아 있는 컴포넌트 상태 불일치이다.
주의 : 시스템 파일 복구, DISM 명령, 레지스트리 변경 등은 모두 관리자 권한 명령 프롬프트 또는 PowerShell에서 수행해야 하며, 기업·관공서 환경에서는 WSUS, 보안 정책을 임의로 변경하기 전에 반드시 담당자 승인 후 작업해야 한다.

2. 본격적인 조치 전에 수행할 기본 점검

2.1 모든 업데이트 적용 및 재부팅

  1. 설정 > Windows 업데이트를 연다.
  2. “업데이트 확인”을 클릭하여 대기 중인 누적 업데이트, .NET 업데이트, 서비스 스택 업데이트가 있다면 모두 설치한다.
  3. 설치 완료 후 PC를 반드시 재부팅한다.
  4. 재부팅 후 다시 한 번 업데이트를 확인하여 추가로 남은 업데이트가 없는지 확인한다.

서비스 스택 또는 누적 업데이트가 완료되지 않은 상태에서는 .NET 3.5 같은 기능 설치가 반복해서 실패하는 경우가 많다.

2.2 네트워크·프록시 환경 확인

  • 가정용 PC에서는 임시로 VPN·특수 프록시 프로그램을 종료한 후 재시도한다.
  • 회사 PC에서는 WSUS/프록시를 통해 인터넷이 제한되는 경우가 많으므로, 오프라인 설치 또는 사내 지침에 맞는 설치 경로를 확인한다.

3. Windows 기능 및 DISM으로 .NET 3.5 설치하기

3.1 제어판 “Windows 기능 켜기/끄기”로 설치

  1. 제어판 > 프로그램 > 프로그램 및 기능을 연다.
  2. 왼쪽 메뉴에서 “Windows 기능 켜기/끄기”를 클릭한다.
  3. 목록에서 .NET Framework 3.5(포함 .NET 2.0 및 3.0) 항목을 체크한다.
  4. “확인”을 눌러 설치를 진행한다.
  5. 온라인 환경이면 Windows 업데이트 서버에서 필요한 파일을 내려받아 설치를 시도한다.

이 방식에서 0x800f0950 오류가 발생한다면, 컴포넌트 저장소 문제 또는 원본 파일 문제일 가능성이 크므로 DISM 기반 수동 설치를 병행해야 한다.

3.2 DISM 온라인 모드로 .NET 3.5 활성화

먼저, 별도 원본 없이 온라인에서 바로 활성화하는 방법이다.

DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
  1. 시작 버튼을 우클릭하고 “Windows 터미널(관리자)” 또는 “명령 프롬프트(관리자)”를 연다.
  2. 위 명령을 입력 후 Enter를 누른다.
  3. 진행률 100% 완료 후 “작업을 완료했습니다” 메시지가 나오면 정상 설치된 것이다.

여기서도 0x800f0950이 발생한다면, 다음과 같이 ISO 원본을 활용한 설치를 고려해야 한다.

3.3 설치 ISO의 SxS 폴더를 이용한 수동 설치

  1. 현재 사용 중인 윈도우 버전(에디션·언어·빌드)과 동일한 설치 ISO를 준비한다.
  2. ISO 파일을 더블 클릭하여 가상 드라이브로 마운트한다. 예를 들어 드라이브 문자가 D:라고 가정한다.
  3. 관리자 권한으로 명령 프롬프트를 연다.
  4. 다음 명령을 실행한다.
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:D:\sources\sxs

/Source 경로의 드라이브 문자 D:는 실제 마운트된 ISO 드라이브 문자에 맞춰 변경해야 한다.

  • /LimitAccess : Windows 업데이트 서버를 사용하지 않고 지정한 원본만 사용한다.
  • /Source : NetFx3 설치 파일이 들어 있는 SxS 폴더 위치이다.
주의 : ISO 버전이 현재 설치된 윈도우 빌드와 다르면 0x800f0950, 0x800f081f 등의 오류가 계속 발생할 수 있다. 반드시 동일 또는 호환 빌드의 ISO를 사용해야 한다.

4. 컴포넌트 저장소 손상 복구 후 재시도

Windows 이미지 또는 시스템 파일이 손상된 경우 .NET 3.5 설치뿐만 아니라 기타 기능 설치도 함께 실패하는 경우가 많다. 아래 순서로 컴포넌트 저장소를 먼저 복구한 후 다시 NetFx3 설치를 시도한다.

4.1 시스템 파일 검사(SFC)

sfc /scannow
  1. 관리자 권한 명령 프롬프트를 연다.
  2. sfc /scannow 명령을 실행한다.
  3. 검사가 100% 완료될 때까지 기다린다.
  4. 손상된 파일을 복구했다는 메시지가 나오면 PC를 재부팅한다.

4.2 DISM으로 컴포넌트 저장소 복구

재부팅 후 다음 명령을 순서대로 실행한다.

DISM /Online /Cleanup-Image /CheckHealth DISM /Online /Cleanup-Image /ScanHealth DISM /Online /Cleanup-Image /RestoreHealth
  • /CheckHealth : 손상 여부 간단 확인이다.
  • /ScanHealth : 손상 여부 상세 검사이다.
  • /RestoreHealth : 손상된 컴포넌트 저장소를 복구한다.

RestoreHealth가 정상 완료된 후 다시 다음 명령으로 .NET 3.5 설치를 시도한다.

DISM /Online /Enable-Feature /FeatureName:NetFx3 /All

5. Windows 업데이트 구성 요소 초기화 후 재설치

업데이트 캐시 손상이나 보류 중인 설치 기록 때문에 0x800f0950이 반복되는 경우, Windows 업데이트 관련 폴더를 초기화한 뒤 다시 시도하면 해결되는 경우가 많다.

5.1 업데이트 관련 서비스 중지

net stop wuauserv net stop cryptSvc net stop bits net stop msiserver

5.2 업데이트 캐시 폴더 이름 변경

ren C:\Windows\SoftwareDistribution SoftwareDistribution.old ren C:\Windows\System32\catroot2 catroot2.old

5.3 서비스 재시작

net start wuauserv net start cryptSvc net start bits net start msiserver

위 과정을 마친 후 시스템을 한 번 재부팅하고, 다시 .NET 3.5 설치를 시도한다.

6. 오프라인·폐쇄망 환경에서 0x800f0950 해결

인터넷 접속이 불가능한 폐쇄망, 또는 WSUS 정책으로 외부 업데이트를 쓰지 못하는 환경에서는 반드시 설치 ISO의 SxS 폴더를 활용해야 한다.

6.1 WIM 이미지 인덱스 확인

일부 환경에서는 install.esd 또는 install.wim에서 적절한 인덱스를 확인해야 할 수 있다.

Dism /Get-WimInfo /WimFile:D:\sources\install.wim

위 명령으로 자신이 사용하는 에디션(Professional, Enterprise 등)에 해당하는 인덱스 번호를 확인한다.

6.2 오프라인 이미지에 NetFx3 미리 추가 후 배포

새 PC 배포용 이미지를 준비할 때는 오프라인 WIM 이미지에 미리 NetFx3를 추가해 두면 이후 0x800f0950 문제를 예방할 수 있다.

Dism /Mount-Wim /WimFile:D:\sources\install.wim /Index:1 /MountDir:C:\Mount Dism /Image:C:\Mount /Enable-Feature /FeatureName:NetFx3 /All /Source:D:\sources\sxs /LimitAccess Dism /Unmount-Wim /MountDir:C:\Mount /Commit

위 방식은 이미지 관리 담당자를 위한 방법이며, 일반 사용자는 마운트 과정 없이 ISO의 SxS 폴더를 직접 사용하면 된다.

7. 그룹 정책·WSUS 환경에서의 추가 설정

도메인에 가입된 PC나 WSUS를 사용하는 조직에서는 선택적 기능 설치 경로가 그룹 정책으로 제한되어 있어 0x800f0950 오류가 발생하는 경우가 있다.

7.1 로컬 그룹 정책 편집기 설정

  1. Win + R을 누르고 gpedit.msc를 입력하여 로컬 그룹 정책 편집기를 연다.
  2. 다음 경로로 이동한다.
    • 컴퓨터 구성 > 관리 템플릿 > 시스템
  3. “선택적 구성 요소 설치 및 구성 요소 복구에 대한 설정 지정” 항목을 더블 클릭한다.
  4. 정책을 “사용”으로 설정하고 다음 옵션을 적절히 지정한다.
    • Windows 업데이트에서 내용 복구 허용 여부
    • 대체 원본 경로 지정(예: \\파일서버\WinSxS 등)
  5. 적용 후 PC를 재부팅하고 다시 .NET 3.5 설치를 시도한다.
주의 : 도메인 환경에서는 로컬 정책 설정이 상위 도메인 정책에 의해 덮어씌워질 수 있다. 이 경우 도메인 관리자에게 NetFx3 설치 정책 및 원본 경로 설정을 요청해야 한다.

8. 언어팩·에디션 불일치 문제 점검

설치 ISO와 현재 시스템의 언어, 에디션, 빌드가 맞지 않으면 SxS 폴더를 사용해도 0x800f0950 오류가 계속 발생할 수 있다.

  • 시스템 언어(ko-KR, en-US 등)와 ISO 언어가 일치하는지 확인한다.
  • Home, Pro, Enterprise 등 에디션 차이가 있을 경우 동일 계열 ISO를 사용하는 것이 안전하다.
  • 윈도우10과 윈도우11 ISO를 혼용해서는 안 된다.

9. DISM·CBS 로그를 통한 추가 원인 분석

여러 방법을 시도해도 0x800f0950이 반복된다면 로그 분석이 필요하다.

  • CBS 로그 : C:\Windows\Logs\CBS\CBS.log
  • DISM 로그 : C:\Windows\Logs\DISM\dism.log

로그에서 NetFx3, 0x800f0950, 0x800f081f, source not found 등의 키워드를 검색하면 원본 경로 문제인지, 컴포넌트 손상인지, 권한 문제인지 구분하는 데 도움이 된다.

10. 해결 방법별 요약 표

상황 추천 해결 방법 주요 명령·경로
일반 가정용 PC, 인터넷 가능 Windows 업데이트 후 DISM 온라인 설치 DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
ISO 보유, 0x800f0950 반복 ISO SxS 폴더 지정 설치 DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:D:\sources\sxs
컴포넌트 손상 의심 SFC + DISM 복구 후 재설치 sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
업데이트 캐시 문제 의심 SoftwareDistribution, catroot2 초기화 ren C:\Windows\SoftwareDistribution ...
도메인·WSUS 환경 그룹 정책에서 대체 원본 경로/업데이트 허용 설정 gpedit.msc > 시스템 > 선택적 구성 요소 설치 설정

FAQ

.NET 4.x만 설치되어 있어도 .NET 3.5는 반드시 설치해야 하는가?

.NET 4.x와 .NET 3.5는 내부 구조와 런타임 버전이 다르다. 일부 오래된 프로그램은 .NET 2.0 또는 3.5 런타임을 직접 요구하기 때문에, 해당 프로그램이 명시적으로 .NET 3.5를 요구한다면 반드시 설치해야 한다.

.NET 3.5를 설치한 후 삭제해도 되는가?

더 이상 사용하지 않는 레거시 프로그램만 .NET 3.5를 요구했다면, 해당 프로그램을 완전히 제거한 뒤 Windows 기능에서 .NET 3.5를 해제해도 된다. 다만 업무용 프로그램이 여전히 이를 요구하는지 확인한 후 제거해야 한다.

ISO 없이 0x800f0950 오류를 해결할 수 있는가?

인터넷이 정상적이고 업데이트 구성 요소에 문제가 없다면, ISO 없이도 Windows 업데이트 서버를 통해 .NET 3.5 설치가 가능하다. 그러나 컴포넌트 손상, WSUS 정책, 네트워크 제한이 있는 경우 ISO의 SxS 폴더를 활용하는 것이 가장 확실한 방법이다.

회사 PC에서 권한이 없어 그룹 정책을 바꿀 수 없는 경우 어떻게 해야 하는가?

도메인 환경에서는 로컬 관리자가 그룹 정책을 수정해도 도메인 정책에 의해 다시 덮어써질 수 있다. 이 경우 IT 담당자에게 오류 코드 0x800f0950과 .NET 3.5 설치 필요성을 전달하고, WSUS·대체 원본 경로 설정 또는 이미지 수준에서 NetFx3를 포함하도록 요청해야 한다.

0x800f0950 외에 0x800f081f 등 다른 코드도 함께 나타난다. 동일한 문제인가?

0x800f081f, 0x800f0906 등은 대체로 설치 원본을 찾을 수 없거나, 지정한 Source 경로가 현재 시스템과 호환되지 않을 때 나타나는 코드이다. 근본적으로는 동일하게 “원본 파일 문제” 범주에 속하며, ISO 버전 검증 및 SxS 경로 재지정으로 함께 해결되는 경우가 많다.

: