이 글에서는 Windows 10 또는 Windows Server 2012 R2 환경에서 이벤트 뷰어에 기록되는 DistributedCOM 소스의 이벤트 ID 10016 오류를 해결하는 방법을 단계별로 안내합니다. DCOM 10016 오류는 Windows XP 시대부터 클라이언트 및 서버 버전 모두에서 매우 흔하게 발생하는 문제로, Windows 버전과 관계없이 동일한 방법으로 해결할 수 있습니다.
DCOM 10016 오류의 증상
컴퓨터 부팅 시 또는 특정 응용 프로그램을 시작하거나 설치하려고 할 때, 이벤트 뷰어의 '시스템(System)' 섹션에 다음과 같은 오류가 기록됩니다.
로그 이름: System
원본: DistributedCOM
이벤트 ID: 10016
수준: 오류
사용자: SYSTEM
설명: 컴퓨터 기본 권한 설정이 CLSID {000209FF-0000-0000-C000-000000000046} 및 APPID Unavailable인 COM 서버 응용 프로그램에 대해 IIS APPPOOL\appIISPool SID(S-1-5-82-3351576649-1006875745-771203599-42452693-1279824824) 사용자에게 LocalHost(LRPC 사용) 주소에서 로컬 활성화(Local Activation) 권한을 부여하지 않습니다. 이 보안 권한은 구성 요소 서비스 관리 도구를 사용하여 수정할 수 있습니다.
오류 원인 분석
오류 메시지를 분석해 보면, 특정 사용자(예: IIS AppPool 계정) 또는 시스템 계정(NT AUTHORITY\SYSTEM)이 DCOM 인프라를 통해 일부 COM 구성 요소를 시작하려고 하지만, '로컬 시작(Local Launch)' 또는 '로컬 활성화(Local Activation)' 권한이 없어 실패하는 것입니다.
오류 코드에는 COM 구성 요소의 클래스 ID(CLSID)와 응용 프로그램 ID(APPID)만 포함되어 있습니다. 따라서 해당 식별자가 어떤 응용 프로그램에 속하는지 확인하고, 성공적인 실행과 활성화에 필요한 권한을 부여해야 합니다.
1단계: CLSID 및 APPID 확인
이벤트 설명에서 CLSID와 APPID를 복사합니다. 이 예시에서는 다음과 같습니다.
CLSID: {000209FF-0000-0000-C000-000000000046}
APPID: {AD65A69D-3831-40D7-9629-9B0B50A93843}
(일부 경우에는 응용 프로그램 식별자가 표시되지 않고 'APPID Unavailable'로 나타날 수 있습니다.)
또한 어떤 권한이 누락되었는지(로컬 활성화 권한), 어떤 계정에 대한 것인지(NT AUTHORITY\SYSTEM 또는 IIS APPPOOL 계정)도 함께 확인합니다. 각 환경마다 클래스, 응용 프로그램, 계정 식별자와 액세스 유형은 다를 수 있습니다.
2단계: 레지스트리 편집기에서 소유권 변경
- 레지스트리 편집기(regedit.exe)를 실행합니다.
- CLSID에 해당하는 레지스트리 키로 이동합니다. 이 예시에서는 HKEY_CLASSES_ROOT\CLSID\{000209FF-0000-0000-C000-000000000046}입니다. 경우에 따라 HKEY_CLASSES_ROOT\Wow6432Node\CLSID\ 키도 함께 확인해야 합니다. 원격으로 레지스트리에 연결한 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID 섹션에서 찾을 수 있습니다.
- 클래스 매개 변수에 응용 프로그램 이름이 지정되어 있는지 확인합니다(이 예시에서는 Microsoft Word Application). DCOM 10016 오류는 대체로 다음 두 구성 요소에서 자주 발생합니다.
Immersive Shell
CLSID: {C2F03A33-21F5-47FA-B4BB-156362A2F239}
APPID: {316CDED5-E4AE-4B15-9113-7055D84DCC97}
RuntimeBroker
CLSID: {D63B10C5-BB46-4990-A94F-E40B9D520160}
APPID: {9CA88EE3-ACB7-47C8-AFC4-AB702511C276} - 레지스트리 키를 마우스 오른쪽 버튼으로 클릭하고 '사용 권한(Permissions)'을 선택합니다.
- '고급(Advanced)' 버튼을 클릭합니다.
- '소유자(Owner)' 섹션에 NT Service\TrustedInstaller 또는 SYSTEM이 지정되어 있을 것입니다.
- '변경(Change)' 버튼을 클릭하고 관리자 계정 이름을 입력한 후 변경 사항을 저장합니다.
- 현재 레지스트리 키 소유자가 자신의 계정으로 변경되었는지 확인합니다. '하위 컨테이너 및 개체의 소유자 바꾸기(Replace owner on subcontainers and objects)' 체크박스를 선택하고 '확인'을 클릭합니다.
- 사용 권한 목록에 관리자 계정을 추가하고 모든 권한(Full Control)을 부여합니다.
- CLSID가 포함된 레지스트리 키에 대한 권한을 부여했습니다. 이제 동일한 절차를 반복하여 오류 설명에 명시된 APPID 레지스트리 키(예: HKEY_CLASSES_ROOT\AppID\{AD65A69D-3831-40D7-9629-9B0B50A93843})에 대해서도 소유권과 권한을 관리자 계정으로 변경합니다.
3단계: 구성 요소 서비스에서 권한 설정
- 구성 요소 서비스 관리 콘솔(dcomcnfg)을 관리자 권한으로 실행합니다(제어판 → 모든 제어판 항목 → 관리 도구 → 구성 요소 서비스).
- 구성 요소 콘솔에서 구성 요소 서비스 → 컴퓨터 → 내 컴퓨터 → DCOM 구성으로 이동합니다. COM 구성 요소 목록에서 앞서 확인한 구성 요소 이름을 찾습니다(응용 프로그램 ID 열의 값이 DCOM 10016 오류 설명의 CLSID와 일치해야 합니다).
목록에서 해당 구성 요소를 찾을 수 없다면 64비트 Windows를 사용 중이고 대상 구성 요소가 32비트일 가능성이 높습니다. 이 경우 다음 명령으로 DCOM 콘솔을 실행해야 합니다.mmc comexp.msc /32 - '보안(Security)' 탭을 클릭합니다. 이제 폼의 모든 컨트롤이 변경 가능한 상태가 됩니다.
주의: 구성 요소의 레지스트리 키 권한을 변경하기 전에 dcomcnfg 콘솔을 열면, 관리자 권한으로 콘솔을 실행했더라도 보안 탭의 모든 설정이 잠겨 있어(변경 불가) 수정할 수 없습니다. - 이 예시에서는 응용 프로그램에 로컬 활성화 권한이 없는 상태였습니다. '시작 및 활성화 권한(Launch and Activation Permissions)' 섹션에서 '사용자 지정(Customize)'을 선택하고 '편집(Edit)' 버튼을 클릭합니다.
- 오류 설명에 명시된 계정을 ACL에 추가해야 합니다. DCOM 10016 오류 내용에 따라 SYSTEM, 특정 사용자 또는 IIS 풀이 실행되는 계정일 수 있습니다(IIS 풀 계정인 경우 로컬 IIS_IUSRS 그룹에 대한 액세스를 추가해야 합니다). 초기 오류에서 NT AUTHORITY\SYSTEM 대신 NT AUTHORITY\NETWORK SERVICE가 지정되었다면 NetworkService 계정에 로컬 시작 및 활성화 권한을 할당해야 합니다.
- 해당 계정에 필요한 권한을 부여합니다. 예를 들어 로컬 시작 = 허용, 로컬 활성화 = 허용으로 설정합니다.
- 컴퓨터를 재시작하고 이벤트 로그를 확인합니다. DCOM 10016 오류가 더 이상 기록되지 않아야 합니다.
마무리
DCOM 10016 오류는 시스템 안정성에 직접적인 영향을 주는 치명적인 문제는 아니지만, 이벤트 로그를 지저분하게 만들고 실제 오류를 파악하기 어렵게 할 수 있습니다. 위 절차를 통해 레지스트리 소유권 변경과 구성 요소 서비스 권한 조정만으로 깔끔하게 해결할 수 있습니다. 작업 전에는 반드시 레지스트리를 백업하고 시스템 복원 지점을 생성하는 것을 권장합니다.