특정 사용자 계정으로 실행되도록 ID가 구성된 COM+ 서버 응용 프로그램을 사용하는 경우, 한동안 정상적으로 작동하다가 갑자기 작동을 멈추고 계속 실패하는 현상이 발생할 수 있습니다. 이 경우 COM+ 응용 프로그램을 다시 시작해야만 문제가 해결됩니다. 이번 글에서는 사용자가 로그오프할 때 Windows 10에서 COM+ 응용 프로그램이 작동을 멈추는 문제의 원인과 해결 방법을 자세히 알아보겠습니다.
COM+ 응용 프로그램이란?
COM+ 응용 프로그램은 구성 요소 서비스(Component Services)의 기본적인 관리 및 보안 단위로, 일반적으로 관련된 기능을 수행하는 COM 구성 요소들의 그룹으로 구성됩니다.
COM 구성 요소들을 논리적 그룹으로 묶어 COM+ 응용 프로그램으로 만들면 다음과 같은 이점을 활용할 수 있습니다.
- COM 구성 요소를 위한 배포 범위 제공
- 보안 경계 및 큐잉을 포함한 공통 구성 범위 제공
- 구성 요소 개발자가 제공하지 않는 특성(트랜잭션, 동기화 등)의 저장
- 구성 요소 DLL(Dynamic-Link Library)을 필요에 따라 프로세스(DLLHost.exe)에 로드
- 구성 요소를 호스팅하는 관리형 서버 프로세스 운영
- 구성 요소가 사용하는 스레드의 생성 및 관리
- 리소스 디스펜서를 위한 컨텍스트 개체 접근 지원, 획득한 리소스를 컨텍스트에 자동 연결
이벤트 ID 10006 및 1530: COM+ 응용 프로그램 작동 중지 현상
사용자가 로그오프할 때 COM+ 응용 프로그램이 작동을 멈추면 클라이언트 컴퓨터의 응용 프로그램 로그에서 아래와 유사한 오류를 확인할 수 있습니다. 만약 클라이언트 실행 파일이 COM+ 서버 응용 프로그램과 같은 컴퓨터에서 실행된다면, 이 오류는 COM+ 서버 측에 나타납니다.
이벤트 유형: 오류
이벤트 원본: DCOM
이벤트 범주: 없음
이벤트 ID: 10006
날짜: 2009-10-17
시간: 오후 1:36:39
사용자: Domain\user
컴퓨터: *****
설명:
DCOM이 서버 활성화를 시도하는 동안 'servername' 컴퓨터에서 "지정되지 않은 오류"가 발생했습니다: {AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}
또한 COM+ 응용 프로그램이 실행 중인 컴퓨터의 응용 프로그램 로그에는 아래와 유사한 이벤트가 함께 기록됩니다.
로그 이름: Application
원본: Microsoft-Windows-User Profiles Service
날짜: 2009-10-26 오전 8:22:13
이벤트 ID: 1530
작업 범주: 없음
수준: 경고
키워드: 클래식
사용자: SYSTEM
컴퓨터: SERVERNAME
설명:
Windows에서 레지스트리 파일이 다른 응용 프로그램 또는 서비스에 의해 아직 사용 중인 것으로 감지되었습니다. 이 파일은 지금 언로드됩니다. 레지스트리 파일을 보유하고 있는 응용 프로그램이나 서비스는 이후 정상적으로 작동하지 않을 수 있습니다.
세부 정보 –
\Registry\User\S-1-5-21-1049297961-3057247634-349289542-1004_Classes에서 사용자 레지스트리 핸들 1개가 누출되었습니다:
프로세스 2428 (\Device\HarddiskVolume1\Windows\System32\dllhost.exe)가 \REGISTRY\USER\S-1-5-21-1123456789-3057247634-349289542-1004_CLASSES 키를 열어 두었습니다.
이벤트 ID 10006 및 1530의 원인
Microsoft에 따르면 원인은 다음과 같습니다.
사용자 프로필 서비스(User Profile Service)는 해당 사용자가 로그오프할 때 사용자 프로필을 강제로 언로드합니다. 이때 프로세스 내에서 레지스트리 핸들이 닫히지 않은 상태라면, 프로필 강제 언로드 기능이 응용 프로그램의 작동을 중단시킬 수 있습니다. 이러한 사용자 프로필 서비스의 새로운 기능은 기본 동작입니다.
COM+ 응용 프로그램과 연결된 사용자 ID는 COM+ 응용 프로그램이 처음 초기화될 때 로그온됩니다. 따라서 이 사용자가 컴퓨터에서 로그오프하면 해당 사용자의 프로필이 언로드되고, COM+ 응용 프로그램은 더 이상 해당 사용자 ID의 프로필에 있는 레지스트리 키를 읽을 수 없게 됩니다. 이것이 바로 문제가 발생하는 원인입니다.
해결 방법: 그룹 정책 편집기에서 설정 변경
이 문제를 해결하려면 그룹 정책 편집기(gpedit.msc)를 통해 사용자 프로필 서비스의 기본 동작을 수정해야 합니다. 절차는 다음과 같습니다.
- 로컬 그룹 정책 편집기를 실행합니다. (Win + R 키를 누르고 gpedit.msc 입력 후 Enter)
- 다음 경로로 이동합니다.
컴퓨터 구성 > 관리 템플릿 > 시스템 > 사용자 프로필
- 오른쪽 창에서 '사용자 로그오프 시 사용자 레지스트리를 강제로 언로드하지 않음(Do not forcefully unload the user registry at user logoff)' 항목을 두 번 클릭하여 속성을 엽니다.
- 설정을 '구성되지 않음'에서 '사용'으로 변경합니다. 이렇게 하면 사용자 프로필 서비스의 새로운 기능이 비활성화됩니다.
- 적용 > 확인을 차례로 클릭하여 저장합니다.

'사용자 로그오프 시 사용자 레지스트리를 강제로 언로드하지 않음' 정책 설정은 Windows 클라이언트 운영 체제의 기본 동작과 반대되는 기능입니다. 이 정책을 사용하도록 설정하면 사용자 프로필 서비스가 레지스트리를 강제로 언로드하지 않고, 대신 다른 프로세스가 더 이상 사용자 레지스트리를 사용하지 않을 때까지 기다린 후에 언로드합니다.
이 설정을 적용하면 사용자가 로그오프하더라도 COM+ 응용 프로그램이 사용자 프로필의 레지스트리 키에 계속 접근할 수 있어, 이벤트 ID 10006 및 1530 오류 없이 안정적으로 작동하게 됩니다.