Windows 10 / Windows Server 2016에 최신 보안 업데이트를 설치한 이후, CDPUserSvc 서비스가 지속적으로 비정상 종료되는 문제가 발생한다는 사용자 불만이 이어지고 있습니다. 이 글에서는 CDPUserSvc 서비스가 무엇인지, 왜 주기적으로 예기치 않게 종료되는지, 이 문제를 해결하는 방법과 Windows 10 / Windows Server 2016에서 해당 서비스를 비활성화할 수 있는지까지 자세히 살펴보겠습니다.
오류: CDPUserSvc_xxxxx의 작동이 멈췄습니다
최근 일부 Windows 10 / Windows Server 2016 사용자들이 Windows 시작 또는 종료 시, 심지어 몇 분마다 다음과 같은 오류가 반복해서 나타난다고 보고하고 있습니다.
"CDPUserSvc_xxxxx의 작동이 멈췄습니다. 프로그램이 올바르게 작동하지 못하게 하는 문제가 발생했습니다. 프로그램을 닫으십시오."
![[해결] Windows 10/Windows Server 2016에서 CDPUserSvc가 작동을 멈췄습니다 오류 수정 방법](https://kr.wsxdn.com/UploadFiles_1288/202203/2022032916292134.png)
응용 프로그램 로그에는 아래와 같은 오류가 계속해서 기록됩니다.
Faulting application name: svchost.exe_CDPUserSvc_12cff5, version: 10.0.14393.0
Faulting module name: cdp.dll, version: 10.0.14393.1715
Exception code: 0xc0000005
Faulting application path: C:\WINDOWS\system32\svchost.exe
Faulting module path: c:\windows\system32\cdp.dll
![[해결] Windows 10/Windows Server 2016에서 CDPUserSvc가 작동을 멈췄습니다 오류 수정 방법](https://kr.wsxdn.com/UploadFiles_1288/202203/2022032916292193.png)
Windows 10 컴퓨터에서 일부 사용자는 Anniversary Update(1607) 또는 Fall Creators Update(1709) 설치 후 이 오류가 발생했다고 보고했습니다. 이 경우에는 CDPUserSvc 서비스를 격리된 프로세스로 시작하거나 완전히 비활성화해 보는 것이 좋습니다(아래 내용 참조).
대부분의 경우 이 버그는 Windows Server 2016 및 Windows 10용 11월 업데이트 KB4048953에 의해 발생합니다.
해당 업데이트가 설치되어 있다면, KB4048953 업데이트를 올바르게 제거하거나(wusa.exe /uninstall /kb:4048953), 버그가 수정된 다음 누적 업데이트 패키지가 배포될 때까지 기다리면 문제를 해결할 수 있습니다.
CDPUserSvc 서비스란 무엇인가?
CDPUserSvc는 'Connected Devices Platform User Service(연결된 장치 플랫폼 사용자 서비스)'를 의미합니다. 서비스의 전체 이름은 고정되어 있지 않으며, CDPUserSvc_ 문자열 뒤에 무작위로 생성된 5개의 문자가 붙는 형태입니다(예: CDPUserSvc_65bd2).
Windows 10 빌드 버전에 따라 CDPUserSvc의 시작 유형은 다음과 같이 다릅니다.
- Windows 10 1507 — 수동 시작
- Windows 10 1511 — 서비스 비활성화
- Windows 10 1607, 1703, 1709, 1803 — 자동 시작
명령 프롬프트에서 다음 명령으로 서비스 상태를 확인할 수 있습니다.
sc query | find "CDPUser"
sc query CDPUserSvc_65bd2
![[해결] Windows 10/Windows Server 2016에서 CDPUserSvc가 작동을 멈췄습니다 오류 수정 방법](https://kr.wsxdn.com/UploadFiles_1288/202203/2022032916292234.png)
이 서비스는 svchost 프로세스에서 시작됩니다: svchost.exe -k UnistackSvcGroup
실행 파일 경로는 %WinDir%\System32\CDPSvc.dll입니다.
흥미로운 점은 services.msc(서비스 관리 콘솔)를 열어 CDPUserSvc 항목을 찾으면 설명 부분에 다음과 같은 문구가 표시된다는 것입니다.
"Failed to read description. error code 15100" (설명을 읽지 못했습니다. 오류 코드 15100)
![[해결] Windows 10/Windows Server 2016에서 CDPUserSvc가 작동을 멈췄습니다 오류 수정 방법](https://kr.wsxdn.com/UploadFiles_1288/202203/2022032916292278.png)
왜 이런 현상이 나타나는지에 대해서는 명확한 이유가 밝혀지지 않았으며, Microsoft에서도 이 서비스에 대한 공식적인 정보를 제공하지 않고 있습니다. 다만 CDPUserSvc의 네트워크 연결을 분석해 보면, 이 서비스가 Microsoft 및 OneDrive 서버에 주기적으로 연결하여 HTTPS를 통해 일부 데이터를 전송하는 것을 확인할 수 있습니다.
UnistackSvcGroup에서 실행되는 프로세스를 확인하려면 Process Explorer를 실행한 뒤 svchost.exe의 속성을 열어 살펴보면 됩니다. 이 프로세스에서는 다음 5개의 서비스가 함께 실행되고 있으며, 모든 서비스가 CDPUserSvc와 동일한 5자리 식별자를 공유합니다.
- CDPUserSvc_xxxxx
- OneSyncSvc_xxxxx — 메일, 연락처, 일정 등 사용자 데이터 동기화 담당
- PimIndexMaintenanceSvc_xxxxx — 빠른 검색을 위한 연락처 인덱싱 서비스
- UnistoreSvc_xxxxx — 구조화된 사용자 데이터(연락처, 일정, 메일) 저장
- UserDataSvc_xxxxx — 구조화된 사용자 데이터 접근 제공
![[해결] Windows 10/Windows Server 2016에서 CDPUserSvc가 작동을 멈췄습니다 오류 수정 방법](https://kr.wsxdn.com/UploadFiles_1288/202203/2022032916292242.png)
이를 통해 미루어 볼 때, CDPUserSvc 역시 Microsoft 서버와의 사용자 데이터 동기화를 담당하는 것으로 추정됩니다. 따라서 Windows 10의 기본 연락처, 메일, 일정 앱을 사용하지 않는다면, CDPUserSvc를 비활성화해도 운영체제에는 아무런 문제가 없습니다.
CDPUserSvc 격리(Isolation) 방법
CDPUserSvc_xxxxx 서비스가 반복적으로 충돌하는 문제를 해결하는 또 다른 방법은 이 서비스를 격리 모드로 실행하는 것입니다. 관리자 권한 명령 프롬프트에서 다음 명령을 실행하세요.
sc config cdpusersvc type= own
정상적으로 적용되면 [SC] ChangeServiceConfig SUCCESS라는 메시지가 출력됩니다.
![[해결] Windows 10/Windows Server 2016에서 CDPUserSvc가 작동을 멈췄습니다 오류 수정 방법](https://kr.wsxdn.com/UploadFiles_1288/202203/2022032916292225.png)
이후 CDPUserSvc는 자체 svchost.exe 프로세스에서 독립적으로 시작됩니다. 그래도 오류가 계속된다면 아래 방법으로 서비스를 비활성화해 보세요.
CDPUserSvc 서비스 비활성화 방법
주의할 점은, services.msc에서 CDPUserSvc를 수동으로 중지하고 '사용 안 함'으로 설정하더라도 잠시 후 다른 이름으로 다시 시작된다는 것입니다.
참고: 레지스트리에서 이 서비스 항목을 직접 삭제해도 잠시 후 다른 이름으로 다시 나타납니다. 즉, 시스템이 이 서비스의 삭제를 스스로 방지하는 구조입니다. (마치 Microsoft가 바이러스 개발자들의 기법을 차용한 것처럼 보입니다 😉)
이 서비스를 확실하게 비활성화하려면 레지스트리 편집기를 이용해야 합니다. 레지스트리 키 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CDPUserSvc에서 Start 값의 데이터를 2(자동 시작)에서 4(사용 안 함)로 변경하세요.
![[해결] Windows 10/Windows Server 2016에서 CDPUserSvc가 작동을 멈췄습니다 오류 수정 방법](https://kr.wsxdn.com/UploadFiles_1288/202203/2022032916292383.png)
또는 명령 프롬프트에서 다음 명령을 실행해도 됩니다.
sc config CDPUserSvc start= disabled
reg add "HKLM\SYSTEM\CurrentControlSet\Services\CDPUserSvc" /v "Start" /t REG_DWORD /d "4" /f
이후 시스템을 재부팅하면 설정이 적용되며, 더 이상 CDPUserSvc 관련 오류 창이 나타나지 않을 것입니다.