엑셀 COM 추가 기능이 비활성화될 때 완벽 복구 가이드(Windows, Office 365·2019·2021 공통)

이 글의 목적은 엑셀에서 COM 추가 기능이 비활성화되는 원인을 체계적으로 진단하고, 현장에서 즉시 적용 가능한 복구·예방 절차와 레지스트리·그룹 정책·배포 스크립트 예시를 제공하는 것이다.

1. 문제 정의와 증상 분류

COM 추가 기능은 DLL 또는 VSTO 기반 구성요소로 레지스트리에 등록되어 엑셀 프로세스에서 로드되는 구성요소이다. 비활성화는 다음과 같이 구분한다.

증상 관찰 위치 특징
추가 기능이 목록에 보이지 않음 파일 → 옵션 → 추가 기능 레지스트리 등록 누락 또는 아키텍처 불일치이다.
체크해도 다시 해제됨 관리: COM 추가 기능 LoadBehavior가 재설정되거나 Resiliency에 의해 차단된 경우이다.
사용 안 함 항목에 표시됨 관리: 사용 안 함 항목 이전 충돌·지연으로 Office가 자동 비활성화한 경우이다.
그룹 정책으로 차단됨 신뢰 센터 → 추가 기능 조직 정책에서 서명 요건 또는 비관리 추가 기능 차단이다.

2. 표준 복구 절차(권장 순서)

2.1 안전 모드로 기동해 원인 분리

  
Win+R → excel.exe /safe
  

안전 모드에서 문제가 재현되지 않으면 특정 추가 기능 충돌 가능성이 높다.

2.2 사용 안 함 항목에서 복구

  1. 파일 → 옵션 → 추가 기능이다.
  2. 아래의 관리 드롭다운에서 사용 안 함 항목 선택 후 이동 이다.
  3. 해당 추가 기능을 선택하고 사용 으로 전환한다.

2.3 COM 추가 기능 체크 및 즉시 로드

  1. 파일 → 옵션 → 추가 기능이다.
  2. 관리: COM 추가 기능 이동 이다.
  3. 대상 항목 체크 후 확인이다.
주의 : 체크가 즉시 해제되면 레지스트리의 LoadBehavior나 Resiliency 키가 원인일 가능성이 높다.

2.4 신뢰 센터 정책 확인

  1. 파일 → 옵션 → 신뢰 센터 → 신뢰 센터 설정이다.
  2. 추가 기능 에서 모든 애플리케이션 추가 기능 사용 안 함 , 서명되지 않은 추가 기능 사용 안 함 설정을 점검한다.
주의 : 조직 환경에서는 로컬 설정이 그룹 정책에 의해 재정의될 수 있다.

3. 레지스트리 핵심 포인트

COM 추가 기능의 로드는 레지스트리 값 조합으로 결정된다. 운영 전 백업을 권장한다.

3.1 주요 경로

키 경로 용도 비고
HKCU\Software\Microsoft\Office\Excel\Addins\ ProgID 사용자 범위 등록 LoadBehavior, Description, FriendlyName 관리이다.
HKLM\Software\Microsoft\Office\Excel\Addins\ ProgID 컴퓨터 범위 등록 관리자 권한 필요이다.
HKCU\Software\Microsoft\Office\16.0\Excel\Resiliency\DisabledItems 자동 비활성 기록 값 존재 시 로드 차단이다.
HKCU\Software\Microsoft\Office\16.0\Excel\Resiliency\CrashingAddinList 충돌 기록 반복 충돌 시 재비활성화이다.
HKCU\Software\Microsoft\Office\16.0\Common\Perf 로드 시간 모니터링 DisableAddinLoadTimeMonitoring=1로 지연 비활성화 억제 가능이다.
HKCU\Software\Microsoft\Office\16.0\Excel\Resiliency\DoNotDisableAddinList 화이트리스트 ProgID 또는 CLSID 이름의 DWORD=1로 보호이다.

3.2 LoadBehavior 값

의미 활용
0 로드 안 함 문제 발생 시 강제 비활성 상태이다.
1 현재 세션에서 로드됨 일시 로드 상태이다.
2 시작 시 로드 엑셀 시작 시 로드 대상이다.
3 시작 로드 + 현재 로드 일반적으로 정상 동작 목표 값이다.
주의 : 시작 후 값이 2 또는 0으로 되돌아가면 충돌, 정책 차단, Resiliency 기록을 의심해야 한다.

3.3 PowerShell로 일괄 복구

  
# 관리자 PowerShell $progId = "YourAddin.ProgID" # 사용자 범위 LoadBehavior=3 New-Item -Path "HKCU:\Software\Microsoft\Office\Excel\Addins\$progId" -Force | Out-Null New-ItemProperty -Path "HKCU:\Software\Microsoft\Office\Excel\Addins\$progId" -Name "LoadBehavior" -PropertyType DWord -Value 3 -Force | Out-Null
Resiliency 차단 해제
$dis = "HKCU:\Software\Microsoft\Office\16.0\Excel\Resiliency\DisabledItems"
if (Test-Path $dis) { Remove-Item $dis -Recurse -Force }

느린 추가 기능 자동 비활성화 모니터링 비활성
New-Item -Path "HKCU:\Software\Microsoft\Office\16.0\Common\Perf" -Force | Out-Null
New-ItemProperty -Path "HKCU:\Software\Microsoft\Office\16.0\Common\Perf" -Name "DisableAddinLoadTimeMonitoring" -PropertyType DWord -Value 1 -Force | Out-Null

화이트리스트 등록
$white = "HKCU:\Software\Microsoft\Office\16.0\Excel\Resiliency\DoNotDisableAddinList"
New-Item -Path $white -Force | Out-Null
New-ItemProperty -Path $white -Name $progId -PropertyType DWord -Value 1 -Force | Out-Null

  

4. 아키텍처·런타임·서명 점검

4.1 32비트·64비트 아키텍처 일치

조합 결과 대응
엑셀 64비트 + DLL 32비트 목록 미표시 또는 등록 실패이다. 추가 기능 64비트 빌드 배포이다.
엑셀 32비트 + DLL 64비트 동일하다. 추가 기능 32비트 빌드 배포이다.

4.2 런타임 구성요소

  • VSTO 기반인 경우 Microsoft Office용 VSTO Runtime 설치 상태 확인이다.
  • C++ 기반인 경우 해당 Microsoft Visual C++ 재배포 가능 패키지 설치 확인이다.
  • .NET 기반인 경우 대상 프레임워크 버전 설치 확인이다.

4.3 디지털 서명·신뢰 배포

  1. 인증서 배포: 루트·중간 인증서가 로컬 컴퓨터 저장소에 설치되어야 한다.
  2. 신뢰 센터에서 신뢰할 수 있는 게시자 등록을 확인한다.

5. 그룹 정책(GPO)로 차단 해제

조직 환경에서 다음 정책이 COM 추가 기능 로드를 차단할 수 있다.

정책 경로 정책 항목 권장 설정
사용자 구성 → 관리 템플릿 → Microsoft Excel 2016 → Excel 옵션 → 추가 기능 관리되지 않는 추가 기능 모두 차단 사용 안 함 이다.
사용자 구성 → 관리 템플릿 → Microsoft Office 2016 → 보안 설정 → 추가 기능 관리 추가 기능 서명 요구 조직 서명 체계 적용 후 사용 이다.
사용자 구성 → 관리 템플릿 → Microsoft Office 2016 → 애플리케이션 설정 공통 느린 추가 기능 자동 비활성화 성능 검증 후 사용 안 함 또는 화이트리스트 병행이다.
주의 : Office 2019·2021·Microsoft 365도 레지스트리 버전은 16.0을 사용한다.

6. 등록 및 재등록 절차

6.1 Regsvr32로 COM DLL 재등록

  
# 64비트 Office + 64비트 DLL C:\Windows\System32\regsvr32.exe "C:\Program Files\Vendor\Addin\YourAddin.dll"
32비트 Office(또는 32비트 DLL) on 64비트 Windows
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\Vendor\Addin\YourAddin.dll"

  
주의 : 성공 메시지가 표시되어도 Excel Addins 키가 없으면 목록에 보이지 않을 수 있다. ProgID 기준 하위 키와 CLSID 등록을 동시에 점검해야 한다.

6.2 MSI·Click-to-Run 혼합 환경 주의

Click-to-Run 환경에서 가상화 경로 이슈로 파일 기반 참조가 실패할 수 있다. 시스템 경로 또는 레지스트리 기반 로드를 사용한다.

7. Resiliency 기록 제거와 화이트리스트

7.1 수동 제거

  
reg delete "HKCU\Software\Microsoft\Office\16.0\Excel\Resiliency\DisabledItems" /f reg delete "HKCU\Software\Microsoft\Office\16.0\Excel\Resiliency\CrashingAddinList" /f 
  

7.2 화이트리스트 등록

  
reg add "HKCU\Software\Microsoft\Office\16.0\Excel\Resiliency\DoNotDisableAddinList" /v YourAddin.ProgID /t REG_DWORD /d 1 /f 
  

8. 원인별 트러블슈팅 매트릭스

원인 진단 방법 해결
추가 기능 충돌 excel.exe /safe로 기동 후 순차 활성화이다. 문제 추가 기능 업데이트 또는 제거이다.
로드 시간 초과 이벤트 뷰어 Microsoft Office Alerts 확인이다. DisableAddinLoadTimeMonitoring=1 설정이다.
정책 차단 GPResult /h 보고서 점검이다. GPO에서 예외 정책 구성이다.
아키텍처 불일치 엑셀 비트 수와 DLL 비트 수 비교이다. 일치 빌드 재배포이다.
서명·인증서 미배포 인증서 관리자에서 체인 유효성 점검이다. 루트·중간 인증서 배포이다.
레지스트리 손상 HKCU/HKLM Addins 하위 키 존재 여부이다. ProgID·CLSID 재등록 및 LoadBehavior=3 설정이다.

9. 배포·운영 자동화 예시

9.1 기업 배포용 PowerShell

  
# 변수 $progId = "YourAddin.ProgID" $addinHKCU = "HKCU:\Software\Microsoft\Office\Excel\Addins\$progId" $perfHKCU = "HKCU:\Software\Microsoft\Office\16.0\Common\Perf" $resiHKCU = "HKCU:\Software\Microsoft\Office\16.0\Excel\Resiliency" # 사용자 범위 키 생성 New-Item $addinHKCU -Force | Out-Null New-ItemProperty $addinHKCU -Name "LoadBehavior" -PropertyType DWord -Value 3 -Force | Out-Null # 성능 모니터링 비활성 New-Item $perfHKCU -Force | Out-Null New-ItemProperty $perfHKCU -Name "DisableAddinLoadTimeMonitoring" -PropertyType DWord -Value 1 -Force | Out-Null # 화이트리스트 및 장애 기록 제거 New-Item "$resiHKCU\DoNotDisableAddinList" -Force | Out-Null New-ItemProperty "$resiHKCU\DoNotDisableAddinList" -Name $progId -PropertyType DWord -Value 1 -Force | Out-Null if (Test-Path "$resiHKCU\DisabledItems") { Remove-Item "$resiHKCU\DisabledItems" -Recurse -Force } if (Test-Path "$resiHKCU\CrashingAddinList") { Remove-Item "$resiHKCU\CrashingAddinList" -Recurse -Force } 
  

9.2 문제 재발 방지 스크립트(로그 포함)

  
$log = "$env:ProgramData\AddinFix\$(Get-Date -Format yyyyMMdd_HHmmss).log" New-Item (Split-Path $log) -ItemType Directory -Force | Out-Null "Start=$((Get-Date))" | Out-File $log -Encoding utf8
function Set-Addin([string]$progId){
$path="HKCU:\Software\Microsoft\Office\Excel\Addins$progId"
New-Item $path -Force | Out-Null
New-ItemProperty $path -Name LoadBehavior -PropertyType DWord -Value 3 -Force | Out-Null
"Set LoadBehavior=3 for $progId" | Out-File $log -Append
}
Set-Addin "YourAddin.ProgID"
"Done" | Out-File $log -Append

  

10. 현장 점검 체크리스트

No 체크 항목 기준 상태
1 엑셀 버전 및 비트 수 파악 버전 16.0, 32/64비트 확인이다. OK / 조치
2 COM 추가 기능 목록 표시 여부 ProgID 노출이다. OK / 조치
3 LoadBehavior 값 3 유지이다. OK / 조치
4 Resiliency 키 존재 DisabledItems 없음이다. OK / 조치
5 신뢰 센터 정책 차단 옵션 비활성이다. OK / 조치
6 디지털 서명·인증서 체인 유효함이다. OK / 조치
7 아키텍처 일치 Excel과 DLL 동일 비트이다. OK / 조치
8 런타임 구성요소 설치 VSTO/C++/.NET 충족이다. OK / 조치

11. 고급 진단

11.1 이벤트 로그

  
이벤트 뷰어 → 응용 프로그램 및 서비스 로그 → Microsoft Office Alerts
  

충돌 모듈과 예외 코드 확인으로 원인 DLL을 특정한다.

11.2 ProcMon 필터

  
Process Name is EXCEL.EXE Path contains \Addins\ or \Resiliency\ Result is NAME NOT FOUND / ACCESS DENIED
  

권한·경로 이슈를 빠르게 식별한다.

11.3 시작 폴더와 충돌 분리

  
엑셀 시작 폴더: %AppData%\Microsoft\Excel\XLSTART 
  

COM 추가 기능은 레지스트리 로드가 원칙이나, XLA·XLAM이 동시에 로드될 때 초기화 순서 영향이 있을 수 있다.

12. 빈번한 실수와 예방 팁

  • 배포 시 HKCU만 설정하고 HKLM을 누락하면 사용자 전환 시 비활성화될 수 있다.
  • 업데이트 설치 후 LoadBehavior가 초기화될 수 있어 로그인 스크립트로 재확인한다.
  • 서명 인증서 갱신 시 구 인증서가 남아 있으면 서명되지 않음 으로 간주된다.
주의 : 레지스트리 편집은 시스템 안정성에 영향을 줄 수 있다. 변경 전 내보내기로 백업한다.

13. 표준 운영 절차(SOP) 예시

  1. 사용자 신고 접수와 증상 분류이다.
  2. 안전 모드 재현 테스트이다.
  3. 사용 안 함 항목 복구 및 COM 체크이다.
  4. Resiliency 정리와 LoadBehavior=3 적용이다.
  5. 정책·서명·아키텍처·런타임 검증이다.
  6. 이벤트 로그 분석 및 벤더 업데이트 적용이다.
  7. 로그 수집과 재발 방지 스크립트 배포이다.

FAQ

체크하면 바로 해제되는 이유는 무엇인가?

Resiliency의 DisabledItems 또는 CrashingAddinList에 기록되어 있거나 그룹 정책이 우선 적용된 경우이다. 해당 키 제거와 정책 완화 후 LoadBehavior=3을 적용한다.

목록에 아예 보이지 않으면 무엇을 확인하나?

ProgID 등록 키와 CLSID 등록, 파일 아키텍처 일치를 확인한다. Regsvr32 재등록과 설치 패키지 복구를 수행한다.

느린 로드로 자동 비활성화가 반복된다면?

성능 개선 업데이트가 우선이다. 불가하면 Common\Perf의 DisableAddinLoadTimeMonitoring=1과 DoNotDisableAddinList를 병행한다.

개별 사용자만 문제일 때 조치는 무엇인가?

해당 사용자 프로필의 HKCU 하이브를 초기화하고, 사용자 범위 키만 재배포한다. 프로필 손상이 의심되면 새 프로필에서 재검증한다.

기업 배포에서 안전한 기본값은 무엇인가?

서명 요구를 유지하되, 검증된 추가 기능만 화이트리스트에 등재하고 LoadBehavior=3으로 관리한다.