- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 Microsoft Word에서 발생하는 추가 기능(Add-in) 충돌 문제를 신속하고 체계적으로 진단·해결할 수 있도록, 현장에서 바로 적용 가능한 절차와 점검표, 복구 명령어, 예방 기준을 제공하는 것이다.
1. 문제 정의와 증상 분류
워드 추가 기능 충돌은 COM Add-in, VSTO, Office Web Add-in, 템플릿 기반 매크로(Add-in Template, .dotm) 등이 Word 프로세스와 상호작용하는 과정에서 로드 순서, 의존 라이브러리, 권한, 샌드박스 정책 차이로 인해 비정상 동작을 유발하는 현상이다.
| 대표 증상 | 가능 원인 | 우선 점검 |
|---|---|---|
| 응답 없음·지연 | COM Add-in 초기화 루프, 손상된 캐시 | 안전 모드 부팅, COM 로드 해제 |
| 시작 시 즉시 종료 | 레지스트리 LoadBehavior 오류 | 레지스트리 값 재설정 |
| 리본 메뉴 사라짐 | 웹 추가 기능 정책 충돌 | Office 계정·정책 확인 |
| 파일 열기 느림 | 템플릿/글꼴/매크로 충돌 | Normal.dotm 교체 |
| 랜덤 오류 코드 | VSTO 런타임·캐시 손상 | VSTO 캐시 삭제 |
2. 가장 빠른 3분 진단 루틴
-
안전 모드 부팅
을 수행한다.
실행 창에서winword /safe명령으로 시작한다. 안전 모드에서 정상 동작하면 추가 기능 가능성이 높다. -
최근에 설치/업데이트된 추가 기능
을 비활성화한다.
파일 → 옵션 → 추가 기능 → 아래의 “관리”에서 COM 추가 기능 선택 후 “이동”을 눌러 체크 해제한다. -
Normal.dotm 초기화
를 수행한다.
사용자 프로필의 템플릿 폴더에서 Normal.dotm을 다른 이름으로 변경하여 재생성되도록 한다.
3. 표준 절차: 원인 특정부터 완전 제거까지
3.1 안전 모드에서의 기본 선별
-
winword /safe로 진입하여 리본·기능 사용 가능 여부를 확인한다. - 이벤트 뷰어에서 Windows 로그 → 응용 프로그램 을 열고 최근 오류의 소스가 APPCRASH, VSTO, .NET Runtime, SideBySide 인지 확인한다.
- 파일 → 옵션 → 추가 기능에서 관리 드롭다운을 COM 추가 기능 , 템플릿 , 사용자 지정 기능 등으로 바꾸어 모두 점검한다.
3.2 COM Add-in 로드 상태와 레지스트리
COM Add-in은 레지스트리의
LoadBehavior
값으로 로드 정책을 제어한다. 일반적으로 3은 자동 로드, 2는 비활성, 0은 로드 안 함을 의미한다.
| 경로 | 키 | 의미 |
|---|---|---|
| HKCU\Software\Microsoft\Office\Word\Addins\ {ProgID} | LoadBehavior | 사용자 범위 로드 설정이다. |
| HKLM\Software\Microsoft\Office\Word\Addins\ {ProgID} | LoadBehavior | 컴퓨터 범위 로드 설정이다. |
| HKCU\Software\Microsoft\Office\16.0\Word\Resiliency | DisabledItems | 자동 비활성화된 항목 목록이다. |
3.3 템플릿·매크로 기반 Add-in 정리
-
Normal.dotm 초기화
: 실행 창에
%appdata%\Microsoft\Templates입력 후 Normal.dotm을Normal.dotm.bak로 변경한다. -
STARTUP 폴더 점검
: 실행 창에
%appdata%\Microsoft\Word\STARTUP입력 후 의심되는 .dot, .dotm, .wll 파일을 다른 위치로 옮긴다.
3.4 VSTO 관련 캐시와 런타임
VSTO 기반 추가 기능은 손상된 캐시로 쉽게 충돌한다. 다음 순서로 정리한다.
-
VSTO 캐시 삭제
%LOCALAPPDATA%\Apps\2.0폴더의 난수형 하위 폴더를 정리한다. -
.NET 및 ClickOnce 캐시 초기화
: 명령 프롬프트에서
rundll32 dfshim CleanOnlineAppCache를 실행한다. - Office 복구 : 제어판의 Microsoft 365/Office에서 온라인 복구를 수행한다.
3.5 Office Web Add-in 환경
- 파일 → 계정에서 로그인 상태와 라이선스를 확인한다.
- 엣지 WebView2 런타임이 설치되어 있는지 점검한다. 없거나 손상 시 재설치한다.
- 조직 정책으로 차단된 경우 관리 콘솔 정책을 확인한다.
4. 명령줄·레지스트리 실무 스니펫
아래 예시는 관리자 권한 콘솔에서의 점검·복구 명령이다. 환경에 맞게 ProgID와 경로를 교체한다.
::
1) Word 안전 모드 즉시 실행 winword /safe
::
2) COM Add-in 로드 강제 해제(사용자 범위)
reg add "HKCU\Software\Microsoft\Office\Word\Addins\MyAddin.ProgID" /v LoadBehavior /t REG_DWORD /d 0 /f
::
3) 자동 비활성 목록 초기화(주의: 복구 후 문제 재발 가능성 점검)
reg delete "HKCU\Software\Microsoft\Office\16.0\Word\Resiliency\DisabledItems" /f
::
4) Normal.dotm 교체 자동화(백업 후 삭제)
set TEMPL=%appdata%\Microsoft\Templates
copy "%TEMPL%\Normal.dotm" "%TEMPL%\Normal.dotm.bak"
del "%TEMPL%\Normal.dotm"
::
5) STARTUP 폴더 격리
set STARTUP=%appdata%\Microsoft\Word\STARTUP
mkdir "%STARTUP%_quarantine"
move "%STARTUP%*.dot*" "%STARTUP%_quarantine"
::
6) VSTO/ClickOnce 캐시 초기화
rundll32 dfshim CleanOnlineAppCache
::
7) WebView2 런타임 버전 확인(경로 예시)
"%ProgramFiles(x86)%\Microsoft\EdgeWebView\Application\msedgewebview2.exe" --version
5. PowerShell로 빠른 인벤토리
# 현재 사용자·컴퓨터 범위 COM 추가 기능 나열 $paths = @( 'HKCU:\Software\Microsoft\Office\Word\Addins', 'HKLM:\Software\Microsoft\Office\Word\Addins', 'HKLM:\Software\WOW6432Node\Microsoft\Office\Word\Addins' ) $items = foreach($p in $paths){ if(Test-Path $p){ Get-ChildItem $p | ForEach-Object { [PSCustomObject]@{ Path = $p ProgID = $_.PSChildName LoadBehavior = (Get-ItemProperty $_.PsPath -Name LoadBehavior -ErrorAction SilentlyContinue).LoadBehavior FriendlyName = (Get-ItemProperty $_.PsPath -Name FriendlyName -ErrorAction SilentlyContinue).FriendlyName Description = (Get-ItemProperty $_.PsPath -Name Description -ErrorAction SilentlyContinue).Description } }} } $items | Sort-Object Path, ProgID | Format-Table -Auto
6. 의존성·충돌 포인트 체크리스트
| 점검 항목 | 방법 | 합격 기준 | 조치 |
|---|---|---|---|
| 로드 시간 | 프로세스 생성 후 리본 표시까지 시간 측정 | 3초 이내 | 3초 초과 시 문제 Add-in 후보로 분류한다. |
| 예외 로그 | 이벤트 뷰어 응용 프로그램 로그 확인 | 예외 0건 | 예외 발생 모듈의 버전 업데이트 또는 제거를 수행한다. |
| 리본 무응답 | 리본 클릭 후 UI 스레드 응답 확인 | 100ms 이내 | 스레드 블로킹 API 호출이 있는 Add-in을 비활성화한다. |
| 파일 열기 지연 | 샘플 .docx 50개 일괄 오픈 | 평균 1초 이내 | 템플릿·글꼴 Add-in 제거를 우선 시도한다. |
| 정상 종료 | 프로세스 종료 후 잔류 핸들 확인 | 핸들 누수 없음 | 문제 Add-in의 종료 이벤트 핸들러 점검이 필요하다. |
7. 완전 제거 시나리오
7.1 Office 관리자용 배포 제거
추가 기능이 MSI 또는 ClickOnce로 배포된 경우 프로그램 추가/제거에서 제거한다. 제거 후 남아 있는 레지스트리 키와 캐시를 수동 정리한다.
7.2 수동 레지스트리·파일 정리
-
레지스트리에서 해당 ProgID의
HKCU,HKLM키를 삭제한다. -
%ProgramFiles%,%ProgramFiles(x86)%,%APPDATA%,%LOCALAPPDATA%내 공급사 폴더 잔여 파일을 삭제한다. -
VSTO인 경우
%LOCALAPPDATA%\Apps\2.0캐시 폴더를 정리한다.
regsvr32 /u
로 DLL 등록 해제를 수행해야 할 수 있다.
8. 재발 방지 설정
- 단계적 배포 : 파일럿 그룹에서 1~2주 안정성 검증 후 전체 배포를 진행한다.
- 버전 고정 : Office 및 Add-in의 호환 가능한 조합을 문서화하고 버전 고정 정책을 운영한다.
- 권한 최소화 : 관리자 범위(HKLM) 설치는 불가피할 때만 사용한다.
- 모듈 격리 : 가능하면 웹 추가 기능을 우선 사용하고, 네이티브 COM은 최소화한다.
- 기록 유지 : 변경 이력, 이벤트 로그, 덤프 파일을 표준 위치에 보관한다.
9. 케이스별 빠른 해결 레시피
9.1 시작하자마자 종료되는 경우
- 안전 모드 진입 후 COM 추가 기능 전부 해제한다.
- 아래 레지스트리로 자동 로드를 차단한다.
reg add "HKCU\Software\Microsoft\Office\Word\Addins\ProblemAddin" /v LoadBehavior /t REG_DWORD /d 0 /f reg add "HKLM\Software\Microsoft\Office\Word\Addins\ProblemAddin" /v LoadBehavior /t REG_DWORD /d 0 /f
9.2 리본 사라짐·버튼 회색 처리
- 조직 계정으로 재로그인한다.
- 웹 추가 기능은 Office 스토어에서 다시 추가한다.
-
WebView2 재설치 후 캐시 폴더
%LOCALAPPDATA%\Microsoft\Edge\User Data를 초기화한다.
9.3 파일 열기 지연·응답 없음
- Normal.dotm 교체 및 STARTUP 폴더 비우기를 우선 시행한다.
- 글꼴 관리자 또는 DLP·보안 에이전트 Add-in과의 상호작용을 확인한다.
10. 현장 점검용 요약 체크리스트
[ ] winword /safe로 정상 실행되는가 [ ] 파일 → 옵션 → 추가 기능에서 COM/템플릿/웹 항목을 유형별로 분류했는가 [ ] Normal.dotm을 교체했는가 [ ] STARTUP 폴더를 격리했는가 [ ] 레지스트리 LoadBehavior 값을 0으로 내렸는가 [ ] Resiliency\DisabledItems를 초기화했는가 [ ] VSTO/ClickOnce 캐시를 삭제했는가 [ ] WebView2 상태를 점검했는가 [ ] 이벤트 로그로 문제 모듈을 특정했는가 [ ] 제거 후 잔여 DLL 등록을 해제했는가
FAQ
안전 모드에서도 비정상이라면 무엇을 우선 확인해야 하나?
Office 자체 손상 가능성이 높다. 온라인 복구를 먼저 수행하고, 사용자 프로필 손상을 의심해 새 프로필에서 검증한다.
Resiliency의 DisabledItems를 지우면 어떤 영향이 있나?
자동으로 차단된 항목 기록이 사라져 일부 문제가 재발할 수 있다. 지우기 전 문제 원인을 특정하고 최신 버전으로 교체하는 것이 바람직하다.
회사에서 특정 Add-in이 필수인데 충돌한다. 어떻게 운용하나?
해당 버전을 고정하고 Office 업데이트 채널을 일시적으로 늦춘다. 충돌 완화 레지스트리·정책을 공급사 권고안대로 적용한다.
VSTO와 COM 중 어떤 방식이 더 안전한가?
시나리오에 따라 다르다. 배포·격리·업데이트 용이성을 중시하면 VSTO가, 레거시 통합이 필요하면 COM이 유리하다. 가능하면 웹 추가 기능으로 대체한다.
Normal.dotm을 삭제했는데 사용자 서식이 사라졌다. 복구 가능한가?
Normal.dotm을 삭제했는데 사용자 서식이 사라졌다. 복구 가능한가?
삭제 전 .bak로 백업했다면 교체로 복구 가능하다. 백업이 없다면 조직 표준 템플릿에서 필요한 서식만 재구성한다.