수정 이력(5건, 최종 수정 2026년 09월 03일)
이 글에 적용한 변경 사항의 기록입니다. 보관해 둔 수정 전 버전은 DOI가 부여된 고정 URL에서 읽을 수 있습니다.
- permalink·저자 표기·지식 맵 래퍼·깨진 내부 링크 등 CI가 지적한 표시용 수정을 반영했습니다. 본문의 기술적인 주장은 바꾸지 않았습니다.
- 기사 맨 앞에 「이 글의 지식 맵」 절을 추가했습니다. 본문에서 다루는 개념과 그 관계를 요약·그림·상세 페이지 링크로 정리한 것입니다. 본문의 주장은 바꾸지 않았습니다.
- 외부 리뷰(1283건) 대응으로 본문을 업데이트했습니다. 개별 변경 내용은 아래 이력을 참조하십시오.
- 1장에 용어 미니 사전과 기사 구성 표를 추가하고, 제목에 일련 번호를 붙였습니다. Step 1에 `OSArchitecture`는 OS의 bitness이며 Office의 것이 아니라는 읽는 법, Step 2에 ActiveX 설정이 Word·Excel·PowerPoint·Visio의 모든 파일에 미친다는 적용 범위, Step 4에 WOW6432Node를 보지 않으면 미등록으로 보인다는 주의를 추가했습니다.
- Office 설정 화면 안내가 현재 화면 표시와 어긋나 있던 것을, 실제 메뉴 이름(보안 센터)으로 고쳤습니다.
- 최초 공개
이 글을 인용하기(DOI: 10.5281/zenodo.21635274)
이 글은 Zenodo에 보관되어 있습니다. 항상 최신 버전으로 연결되는 DOI와 지금 보고 있는 버전에 고정된 DOI를 아래에 함께 제시합니다.
Go Komura (2026). 「Office 2024/Microsoft 365에서 ActiveX가 작동하지 않는 원인과 확인 절차」. 합동회사 코무라소프트. https://doi.org/10.5281/zenodo.21635274 https://comcomponent.com/ko/blog/office-2024-microsoft-365-activex-troubleshooting/
- DOI(최신 버전)
- 10.5281/zenodo.21635274
- DOI(이 버전)
- 10.5281/zenodo.21635275
1. 가장 먼저 알아 두어야 할 것
Office 2024와 Microsoft 365에서는 ActiveX 컨트롤이 기본으로 비활성화되어 있습니다. 예전에는 동작하던 Excel 버튼이나 폼, Word / PowerPoint의 포함 개체가 업데이트 뒤에 갑자기 “작동하지 않는” 것처럼 보이는 것은, 대개 프로그램 고장이 아니라 보안 기본값 변경이 원인입니다.
원인은 크게 3가지로 나눌 수 있습니다.
- 보안 설정 변화(Trust Center, ActiveX 기본 비활성화)
- 32bit / 64bit 불일치(64bit Office에 32bit 전용 컨트롤을 올린 경우)
- COM 등록이나 의존 DLL / 런타임 부족(regsvr32 미실행, VC++ 런타임 누락)
실무 원칙: 이 순서대로 위에서부터 원인을 좁히는 것이 가장 빠릅니다.
이 글에서 쓰는 용어
IT 관리자(정보시스템 담당)를 위해, 본문에서 따로 설명하지 않고 나오는 용어를 먼저 정리합니다.
| 용어 | 의미 |
|---|---|
| bitness(비트 수) | 32bit 버전인지 64bit 버전인지의 구분. Office, Windows, COM / ActiveX 컨트롤 각각에 bitness가 있으며, Office와 COM의 bitness가 일치하지 않으면 동작하지 않습니다(Windows의 bitness와는 별개입니다) |
| MOTW(Mark of the Web) | 브라우저나 메일 클라이언트가 내려받은 파일에 붙이는 “인터넷에서 왔다”는 표시. 실체는 Zone.Identifier라는 대체 데이터 스트림이며, 이것이 있으면 Office는 보호된 보기로 열고 ActiveX나 매크로를 막습니다. 파일 속성의 “허용”이나 PowerShell의 Unblock-File로 제거할 수 있습니다 |
| kill bit(킬 비트) | 특정 CLSID의 컨트롤을 호스트 쪽에서 시작하지 못하게 하는 비활성화 장치. Office에서는 COM Compatibility 키 아래에 CLSID 단위로 설정됩니다. 여기에 값이 있으면 COM 등록이 맞아도 그 컨트롤은 동작하지 않습니다 |
| Click-to-Run | 현재 Office의 설치 방식. 가상화된 배치와 자동 업데이트가 전제라, MSI 시절의 도입 절차나 자체 등록 전제 설계가 그대로는 통하지 않는 경우가 있습니다 |
| Trust Center(보안 센터) | Office 보안 설정을 모은 화면. 한국어판 메뉴에서는 “보안 센터”로 표시됩니다 |
이 글의 구성
길기 때문에 필요한 부분부터 읽으면 됩니다. 크게 3묶음입니다.
| 묶음 | 장 | 내용 |
|---|---|---|
| 전제를 맞춘다 | 1~3장 | 기본 비활성화, Office 2024와 Microsoft 365의 차이, 원인 구분의 전체 그림 |
| 위에서부터 원인을 나눈다 | 4~9장(Step 1~6) | 환경 정보 수집 → Trust Center → IE 모드 → COM 등록 → 의존 DLL → 로그 수집 |
| 빠른 표와 방침 | 10~15장 | 레지스트리 / 정책 빠른 표, 증상별 대응, 기업용 권장 설정, 명령 빠른 표 |
급하면 먼저 11장 “자주 있는 증상과 대응”에서 자신의 증상을 찾고, 해당 Step으로 돌아가면 됩니다.
이 글의 지식 맵
Office 2024와 Microsoft 365에서는 ActiveX 컨트롤이 기본적으로 사용하지 않도록 설정되어 있으며, 이전에 동작하던 버튼이나 포함 개체가 동작하지 않게 되는 주된 원인은 이 기본값 변경에 있습니다. ActiveX의 동작은 COM으로서의 레지스트리 등록을 전제로 하며, Office와 컴포넌트의 bitness가 일치하지 않으면 동작하지 않고, RegAsm의 bitness 차이도 같은 불일치를 초래합니다. Trust Center의 ActiveX 설정과 Trusted Publisher에 의한 코드 서명 취급, MOTW 부여에 의한 보호된 보기, .NET Framework나 Visual C++ Redistributable과 같은 의존 런타임 부족, Click-to-Run 특유의 설치 방식, Edge의 IE 모드 미구성도 비슷한 증상을 일으킬 수 있습니다. 원인을 가려내는 데에는 Process Explorer나 Procmon으로 실제로 확인하는 것이 유효하며, 항구적인 조치에는 제한적인 허용과 Monthly Enterprise Channel 채택이 권장됩니다.
flowchart LR
accTitle: Office 2024/Microsoft 365의 ActiveX 문제 해결의 지식 맵
accDescr: ActiveX가 기본적으로 사용하지 않도록 설정되어 있다는 점, COM 등록과 bitness 일치라는 전제, Trust Center·보호된 보기·의존 런타임·Click-to-Run·IE 모드라는 여러 원인이 ActiveX 동작 실패로 어떻게 이어지는지를 보여주는 그림.
activex["ActiveX"]
com["COM(컴포넌트 오브젝트 모델)"]
clsid["CLSID(Class ID)"]
wow6432node["WOW6432Node"]
regsvr32["regsvr32"]
regasm["Regasm.exe"]
bitness_match_requirement["비트수 일치 요건"]
activex_load_failure["ActiveX 동작 실패"]
office_trust_center["보안 센터"]
trusted_publisher_store["신뢰할 수 있는 게시자 저장소"]
code_signing_cert["코드 서명 인증서"]
zone_identifier["Zone.Identifier(Mark of the Web)"]
protected_view["보호 보기"]
dotnet_framework[".NET Framework"]
vc_redistributable["Visual C++ 재배포 가능 패키지"]
procmon["Process Monitor(procmon.exe)"]
process_explorer["Process Explorer"]
ie_mode["IE 모드"]
enterprise_site_list["Enterprise Site List"]
click_to_run["Click-to-Run"]
office_msi_install["Office MSI 설치(구방식)"]
disableallactivex_policy["DisableAllActiveX(검증용 레지스트리)"]
monthly_enterprise_channel["월별 엔터프라이즈 채널"]
activex -->|"전제로 한다"| com
com -->|"이용한다"| clsid
com -.->|"에 저장된다"| wow6432node
regsvr32 -->|"구현을 담당한다"| com
regasm -->|"구현을 담당한다"| com
regasm -->|"전제로 한다"| bitness_match_requirement
activex -->|"전제로 한다"| bitness_match_requirement
bitness_match_requirement -->|"원인이 될 수 있다"| activex_load_failure
activex -.->|"에서 구성할 수 있다"| office_trust_center
office_trust_center -->|"이용한다"| trusted_publisher_store
trusted_publisher_store -->|"전제로 한다"| code_signing_cert
code_signing_cert -->|"권장되는 대응"| activex
zone_identifier -->|"원인이 될 수 있다"| protected_view
protected_view -.->|"원인이 될 수 있다"| activex_load_failure
activex -.->|"전제로 한다"| dotnet_framework
activex -.->|"전제로 한다"| vc_redistributable
activex_load_failure -->|"에서 확인할 수 있다"| procmon
activex_load_failure -->|"에서 확인할 수 있다"| process_explorer
ie_mode -.->|"에서 구성할 수 있다"| enterprise_site_list
ie_mode -.->|"원인이 될 수 있다"| activex_load_failure
click_to_run -->|"의 후속"| office_msi_install
click_to_run -.->|"원인이 될 수 있다"| activex_load_failure
disableallactivex_policy -->|"사용은 비권장"| activex
monthly_enterprise_channel -->|"권장되는 대응"| activex
그림의 실선은 항상 성립하는 관계, 점선은 조건이 붙는 관계입니다(성립 조건은 상세 페이지의 관계별 설명에 적혀 있습니다). 관계 전체 목록(총 24건, 근거와 확신도 포함)과 주요 개념의 정의는 지식 맵 상세 페이지에 정리되어 있습니다(일본어). 데이터: JSON-LD / Turtle
2. Office 2024 계열 vs Microsoft 365 ── 무엇이 다른가
| 관점 | Office 2024 계열(영구 라이선스) | Microsoft 365 Apps(구독) |
|---|---|---|
| 업데이트 모델 | 보안 / 품질 업데이트만. 새 기능은 추가되지 않음 | 채널 단위로 기능이 계속 업데이트됨 |
| ActiveX 기본값 | 기본 비활성화 | 기본 비활성화(동일) |
| 레지스트리 / 정책 경로 | 16.0 그대로 | 16.0 그대로 |
| 지원 OS(2026년 시점) | Windows 11, Server 2025 / 2022, Win10 LTSC | Windows 11, Server 2025 / 2022가 정식 요건. Win10은 2028년 10월까지 전환 유예 |
| 설치 방식 | Click-to-Run(MSI가 아님) | Click-to-Run |
중요: 레지스트리 경로는 Office 2024에서도 16.0 그대로입니다. “2024이니까 24.0을 찾는다”는 전형적인 멀리 돌아가는 실수입니다.
Windows 10에서 주의할 점
Windows 10의 일반 지원은 2025년 10월 14일에 종료되었습니다. 다만 Microsoft 365 Apps는 Windows 10에서도 2028년 10월 10일까지 보안 업데이트가 제공되는 전환 유예 기간 중입니다. 즉 다음 상태입니다.
- “Windows 10에서는 전혀 동작하지 않는다”는 것은 아닙니다
- “OS는 지원 종료, Apps는 유예 중”이라는 이중 전제로 운용하는 상태입니다
3. 문제 해결의 전체 그림
flowchart TD
A[증상 재현] --> B[Office 제품명·build·bitness·OS 정보 수집]
B --> C{OS / Office 지원 전제는 OK?}
C -- NG --> C1[전제 수정: OS / Office 에디션 / 채널 재검토]
C -- OK --> D[Trust Center 확인]
D --> E{ActiveX 설정 / 보호된 보기 / 신뢰할 수 있는 문서에 문제?}
E -- 있음 --> E1[설정·서명·배포 설계 수정]
E -- 없음 --> F{레거시 Web / IE 전제?}
F -- 예 --> F1[IE 모드와 사이트 목록 확인]
F -- 아니오 --> G[CLSID / InprocServer32 / TypeLib 확인]
G --> H{COM 등록은 정상?}
H -- NG --> H1[regsvr32 / RegAsm / 재설치]
H -- OK --> I[의존 DLL / .NET / VC++ 런타임 확인]
I --> J{의존성은 충족하는가?}
J -- NG --> J1[해당 런타임 복구·재배포]
J -- OK --> K[로그 수집 / Procmon / Process Explorer]
K --> L[build 차이·보안 업데이트 차이 확인]
4. Step 1 ── 환경 정보를 수집한다
먼저 아래 정보를 반드시 기록합니다. 감이 아니라 수치로 판단하기 위해서입니다.
Office 쪽
- [파일] → [계정] → [제품 정보]에서 확인
- 제품명(Office 2024 / Microsoft 365 구분)
- 버전과 빌드 번호(가장 중요)
- 설치 종류(Click-to-Run)
- [Excel의 버전 정보] / [Word의 버전 정보] 등 제품 정보 대화상자에서 32bit / 64bit를 확인
Windows 쪽
# OS 의 기본 정보
Get-CimInstance Win32_OperatingSystem |
Select-Object Caption, Version, BuildNumber, OSArchitecture
# Office 프로세스의 실행 파일 경로
Get-Process WINWORD, EXCEL, POWERPNT, VISIO -ErrorAction SilentlyContinue |
Select-Object ProcessName, Path
가져온 결과를 어떻게 읽을까
출력 자체는 환경마다 다르므로, 봐야 할 열과 판단 기준을 적습니다.
| 열 | 내용 | 판단 |
|---|---|---|
Caption |
OS 에디션 이름 | Windows 10인지 11인지. 지원 전제 확인에 사용 |
Version / BuildNumber |
OS 버전과 빌드 번호 | “최신입니다”가 아니라 이 수치로 대화한다 |
OSArchitecture |
OS가 64비트인지 32비트인지 | 이것은 OS의 bitness입니다. Office의 bitness가 아닙니다 |
Path(Get-Process 쪽) |
Office 실행 파일 위치 | 64bit Windows에서는 C:\Program Files (x86)\Microsoft Office\...에 있으면 32bit Office, C:\Program Files\Microsoft Office\...에 있으면 64bit Office |
Get-Process가 한 건도 반환하지 않으면, 대상 Office 앱이 실행되지 않은 것뿐입니다. 확인할 앱을 연 뒤 다시 실행하십시오. -ErrorAction SilentlyContinue를 붙였으므로, 실행 중이 아닌 프로세스 이름이 있어도 오류가 되지 않습니다.
Office 쪽 bitness는 앱 메뉴에서도 확인할 수 있습니다. Excel이라면 “파일”→”계정”→”Excel의 버전 정보”로 들어가면, 연 대화상자의 첫 줄에 버전, 빌드 번호, “32비트” 또는 “64비트” 표기가 나란히 있습니다. 이 줄을 그대로 적어 두면 벤더 문의나 재현 검증에서 이야기가 빨라집니다.
흔한 함정
| 잘못된 생각 | 올바른 접근 |
|---|---|
| “최신 버전입니다”로 끝낸다 | 빌드 번호를 확인한다. Microsoft 365는 채널 차이가 크다 |
| 64bit Office에 32bit 전용 COM / ActiveX를 올린다 | Office의 bitness와 COM의 bitness는 반드시 일치해야 한다 |
| Windows 10이라서 안 된다고 단정한다 | 전환 유예 중이므로 동작하는 경우도 있지만, 전제가 불안정하다 |
5. Step 2 ── Trust Center와 보안 설정을 확인한다
여기서 할 일은 “파일 자체가 차단된 것인지”, 아니면 “COM 실체 로드에 실패한 것인지”를 나누는 것입니다.
체크리스트(위에서부터 순서대로)
| # | 확인 항목 | 확인 위치 | 흔한 원인 |
|---|---|---|---|
| 1 | ActiveX 메시지 표시줄 | 파일을 열 때 나오는 노란색 표시줄 | 기본 비활성화. [콘텐츠 사용]으로 일시적으로 동작하는지 시험한다 |
| 2 | Trust Center > ActiveX 설정 | [파일] > [옵션] > [보안 센터] > [보안 센터 설정(T)…] > [ActiveX 설정] | “알림 없이 모두 사용 안 함”이 아닌지 |
| 3 | 보호된 보기 | Trust Center > 보호된 보기 | 네트워크 공유나 메일 첨부에서 열면 차단된다 |
| 4 | 신뢰할 수 있는 문서 | Trust Center > 신뢰할 수 있는 문서 | 한 번 trust되면 경고가 사라져 재현이 단말에 따라 달라진다 |
| 5 | 신뢰할 수 있는 게시자 | Trust Center > 신뢰할 수 있는 게시자 | 서명이 있어도 인증서가 배포되지 않으면 허용되지 않는다 |
| 6 | 매크로 설정 | Trust Center > 매크로 설정 | 매크로와 ActiveX는 별도 설정이지만 겹쳐 영향을 주는 경우가 있다 |
화면의 어디를 볼까
화면 예시 대신 위치와 조작 순서를 적습니다.
- 메시지 표시줄: 파일을 연 직후, 리본과 편집 영역 사이에 가로로 긴 띠로 나타납니다. 닫았다면 파일을 닫았다가 다시 열면 다시 표시됩니다.
- ActiveX 설정 화면: “파일”→”옵션”→”보안 센터”까지 가도, 거기 보이는 것은 설명문과 단추뿐입니다. 설정의 실체는 “보안 센터 설정(T)…” 단추를 누른 뒤에 있고, 연 화면 왼쪽 목록에서 “ActiveX 설정”을 고릅니다. 이 한 단계를 건너뛰면 목적 화면에 닿지 않습니다. Microsoft 안내에서도 ActiveX를 사용하는 절차는 메시지 표시줄의 일시 허용이 아니라 이 설정 변경으로 설명되어 있습니다.
- 보호된 보기 / 신뢰할 수 있는 문서 / 신뢰할 수 있는 게시자: 모두 같은 “보안 센터 설정” 화면의 왼쪽 목록에 있습니다. 재현 확인 전에 신뢰할 수 있는 문서 기록을 지워 두면 단말 간 차이가 나기 어렵습니다.
설정 적용 범위에 주의: ActiveX 설정은 지금 연 파일만이 아니라 Word / Excel / PowerPoint / Visio의 모든 파일에 적용됩니다. “이 파일만 허용”하는 설정이 아닙니다. 조사를 위해 잠시 느슨하게 했다면 반드시 원래대로 되돌리십시오.
먼저 시험할 것
- 문제 파일을 로컬의 관리된 폴더(예:
C:\Temp)에 복사하고 다른 이름으로 저장 - 네트워크 공유나 메일 첨부에서 바로 열지 않기(보호된 보기 영향을 배제)
- Office를 안전 모드로 시작해 추가 기능 영향을 나눈다
excel /safe
winword /safe
powerpnt /safe
6. Step 3 ── IE 모드 의존 여부를 확인한다
“평범한 ActiveX 장애”라고 생각했는데, 실제로는 Edge의 IE 모드 미구성이 원인인 경우가 있습니다.
- IE 모드는 브라우저 전체 스위치가 아니라, Enterprise Site List에 등록한 사이트에만 적용됩니다
- 사내 Web 연동의 일부만 동작하지 않으면, 그 사이트가 IE 모드 대상인지 확인합니다
확인할 곳은 다음과 같습니다.
- Edge 정책: 관리 템플릿 > Microsoft Edge
- 레지스트리:
HKLM\SOFTWARE\Policies\Microsoft\Edge - 진단 페이지:
edge://compat/iediagnostic
7. Step 4 ── COM 등록을 확인한다
Trust Center에 문제가 없으면, 다음은 COM 실체가 올바르게 등록되어 있는지 확인합니다.
기본 확인 명령
:: CLSID 의 등록 상황을 확인
reg query "HKLM\SOFTWARE\Classes\CLSID\{YOUR-CLSID-HERE}\InprocServer32" /s
:: 네이티브 COM / ActiveX DLL 의 등록·해제
regsvr32 C:\Path\YourControl.dll
regsvr32 /u C:\Path\YourControl.dll
확인 결과 읽는 법
reg query 결과에서 볼 것은 세 가지입니다.
- 키가 존재하는가. 키가 없으면 아무 것도 표시되지 않고 “찾을 수 없습니다” 오류만 반환됩니다. 이 시점에서 미등록이 확정됩니다.
- 기본값에 들어 있는 DLL 경로. 여기가 COM 실체입니다.
- 그 경로에 파일이 실제로 있는가. 제거나 이동으로 실체만 사라지고 등록만 남은 상태는 흔합니다.
판정까지 한 번에 하려면 PowerShell이 더 읽기 쉽습니다.
# 조사할 CLSID 로 바꿔 실행합니다(중괄호를 포함해 지정)
$clsid = '{00000000-0000-0000-0000-000000000000}'
$key = "HKLM:\SOFTWARE\Classes\CLSID\$clsid\InprocServer32"
if (Test-Path $key) {
$server = Get-ItemPropertyValue -Path $key -Name '(default)'
[pscustomobject]@{
CLSID = $clsid
Server = $server
FileExists = Test-Path $server
}
} else {
Write-Host "미등록: $key 을(를) 찾을 수 없습니다"
}
FileExists가 False이면 등록은 남았는데 실체가 없는 상태입니다. 재설치나 재등록이 필요합니다.
보는 곳을 틀리지 않기: 64bit Windows에서 32bit COM을 등록하면 실체는
HKLM\SOFTWARE\Classes\WOW6432Node\CLSID\{CLSID}쪽에 들어갑니다. 64bit PowerShell이나reg query에서HKLM\SOFTWARE\Classes\CLSID만 보면 “미등록”으로 보이므로, 32bit Office 문제에서는WOW6432Node아래도 반드시 확인하십시오.
.NET으로 만든 COM의 경우(중요)
.NET 어셈블리에는 regsvr32를 쓸 수 없습니다. RegAsm을 사용합니다.
:: 32bit Office on 64bit Windows → Framework 의 RegAsm 을 사용
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" "C:\Path\YourControl.dll" /codebase /tlb
:: 64bit Office → Framework64 의 RegAsm 을 사용
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" "C:\Path\YourControl.dll" /codebase /tlb
전형적인 사고: “RegAsm의 bitness가 Office의 bitness와 맞지 않다” → 레지스트리상으로는 등록에 성공해도 Office에서는 찾을 수 없다.
8. Step 5 ── 의존 DLL / 런타임을 확인한다
“본체 DLL은 있는데 로드되지 않는다”면 의존 대상이 부족한 경우가 많습니다.
실무에서 자주 부족한 런타임
| 부족하기 쉬운 것 | 확인 방법 |
|---|---|
| Visual C++ 재배포 가능 패키지(2013, 2015-2022) | 제어판 > 프로그램 및 기능에서 목록 확인 |
| .NET Framework 4.8.1 | reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" |
| 의존 DLL(벤더 고유) | Process Explorer / Procmon으로 확인 |
저수준 조사 도구
| 도구 | 용도 |
|---|---|
| Process Explorer | 프로세스에 로드된 DLL 목록을 확인 |
| Procmon | NAME NOT FOUND / PATH NOT FOUND / ACCESS DENIED를 실시간으로 추적 |
Procmon으로 재현 순간의 로그를 잡고 NAME NOT FOUND로 필터하면, 어느 DLL이나 레지스트리 키를 찾지 못했는지 한눈에 알 수 있습니다.
필터 거는 법, 노이즈 줄이는 법, 어느 이벤트부터 읽을지는 Process Monitor(ProcMon) 실무 가이드에 절차로 정리해 두었습니다. 또한 등록과 bitness 조합에서 막힌 경우에는 COM/OCX/ActiveX 개발에서 빠지는 등록과 bitness의 함정이 개발 쪽에서 본 같은 문제를 다룹니다.
9. Step 6 ── 로그를 모아 최종 확인
여기까지 원인을 특정하지 못하면 로그를 켜고 재현 순간을 잡습니다.
Office 일반 로그 활성화
reg add HKCU\Software\Microsoft\Office\16.0\Common\Logging /v EnableLogging /t REG_DWORD /d 1
Click-to-Run 상세 로그 활성화
reg add HKLM\SOFTWARE\Microsoft\ClickToRun\OverRide /v LogLevel /t REG_DWORD /d 3
reg add HKLM\SOFTWARE\Microsoft\ClickToRun\OverRide /v PipelineLogging /t REG_DWORD /d 1
로그는 %windir%\temp나 %temp%에 출력됩니다.
이벤트 뷰어도 함께 쓴다
eventvwr.msc
- Windows 로그 > 애플리케이션을 확인합니다
- .NET Runtime이나 SideBySide 오류가 결정적인 경우가 많습니다
검증 후 로그 끄기(잊지 말 것)
reg delete HKCU\Software\Microsoft\Office\16.0\Common\Logging /v EnableLogging /f
reg delete HKLM\SOFTWARE\Microsoft\ClickToRun\OverRide /v PipelineLogging /f
reg delete HKLM\SOFTWARE\Microsoft\ClickToRun\OverRide /v LogLevel /f
10. 주요 레지스트리 / 정책 빠른 표
기억할 네 경로
| 용도 | 경로 |
|---|---|
| Office 정책 루트 | HKLM\SOFTWARE\Policies\Microsoft\Office\16.0 |
| ActiveX 일괄 비활성화 확인 | HKCU\Software\Microsoft\Office\Common\Security\DisableAllActiveX(1=비활성, 0=해제) |
| COM 실체 등록 | HKLM\SOFTWARE\Classes\CLSID\{CLSID}\InprocServer32 |
| Office COM kill bit | HKLM\Software\Microsoft\Office\16.0\Common\COM Compatibility\{CLSID} |
32bit Office on 64bit Windows에서는 COM 관련은
Wow6432Node아래도 확인합니다.
자주 쓰는 테스트용 레지스트리(검증 전용)
Windows Registry Editor Version 5.00
; 테스트 전용: ActiveX 일괄 비활성화를 해제
[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security]
"DisableAllActiveX"=dword:00000000
경고: 이 설정은 검증 전용입니다. 항구적 대응은 “신뢰할 수 있는 배포 경로와 서명”으로 하십시오.
11. 자주 있는 증상과 대응
| 증상 | 가장 가능성 높은 원인 | 먼저 시험할 것 |
|---|---|---|
| 업데이트 뒤에 버튼이 반응 없음 | ActiveX 기본 비활성화 | 메시지 표시줄 → [콘텐츠 사용] → Trust Center 확인 |
| 64bit Office에서만 실패 | 32bit 전용 COM / ActiveX | 벤더에 x64 버전 유무를 확인. 없으면 Office 32bit로 전환 |
| 특정 PC만 동작하지 않음 | COM 미등록 / 등록 손상 | reg query로 CLSID 확인 → regsvr32로 재등록 |
| DLL은 있는데 로드되지 않음 | 의존 DLL / VC++ 런타임 부족 | Procmon으로 NAME NOT FOUND를 추적 |
| 네트워크 공유나 메일 첨부에서 실패 | 보호된 보기 / MOTW | 로컬 폴더에 복사해 재현 차이를 확인 |
| 사내 Web 연동의 일부만 실패 | IE 모드 미구성 | Enterprise Site List에 대상 사이트를 추가 |
| 서명했는데도 허용되지 않음 | 인증서 미배포 / 신뢰할 수 있는 게시자 미등록 | 코드 서명 유효성과 인증서 배포를 확인 |
| MSI 시절 도입 절차를 그대로 써서 동작이 달라짐 | Click-to-Run 전제로의 전환 | 예전 스크립트나 자체 등록 전제 설계를 다시 본다 |
12. 기업용 권장 설정
상시 대책의 기본은 “전체 보안을 낮추는 것”이 아니라 “필요한 대상만 제한적으로 허용하는 것”입니다.
| 항목 | 권장 |
|---|---|
| 업데이트 채널(Microsoft 365) | 레거시 ActiveX 의존이 강한 단말은 월별 엔터프라이즈 채널(변경 지점을 읽기 쉬움) |
| Office bitness | 벤더가 x64 지원을 명시하지 않는 한 Office 32bit를 우선 검토 |
| Trusted Locations | 네트워크상의 신뢰할 수 있는 위치는 원칙 금지. 필요 시 예외 신청 방식 |
| 서명 | 사내 배포 ActiveX / 매크로 / 추가 기능은 코드 서명하고 Trusted Publisher를 한곳에서 관리 |
| IE 모드 | 필요한 URL만 Enterprise Site List에 등록(전체를 레거시화하지 않음) |
| 배포 전 검증 | 프로덕션 배포 전에 pilot ring을 만들고, 대표 서식 / 대표 단말에서 build를 고정해 검증 |
Microsoft 365 배포 설정 예(32bit + 월별 엔터프라이즈)
<Configuration>
<Add OfficeClientEdition="32" Channel="MonthlyEnterprise">
<Product ID="O365ProPlusRetail">
<Language ID="ja-jp" />
</Product>
</Add>
<Updates Enabled="TRUE" />
<Display Level="None" AcceptEULA="TRUE" />
</Configuration>
13. 마지막 수단 ── 복구
- 빠른 복구 / 온라인 복구는 설정이나 등록 손상에는 효과가 있습니다
- 다만 x86 / x64 불일치나 서명 / 정책 문제 자체는 해결하지 않습니다
- 복구는 “마지막에 한다”(먼저 하면 조사 로그가 더러워집니다)
14. 명령 빠른 표
| 목적 | 명령 |
|---|---|
| 안전 모드 시작 | excel /safe / winword /safe |
| COM DLL 등록 | regsvr32 xxx.dll |
| COM DLL 해제 | regsvr32 /u xxx.dll |
| .NET COM 등록 (32bit Office) | Framework\v4.0.30319\RegAsm.exe xxx.dll /codebase /tlb |
| .NET COM 등록 (64bit Office) | Framework64\v4.0.30319\RegAsm.exe xxx.dll /codebase /tlb |
| 레지스트리 백업 | reg export HKCU\... backup.reg /y |
| Office 일반 로그 활성화 | reg add HKCU\Software\...\Logging /v EnableLogging /t REG_DWORD /d 1 |
| Click-to-Run 상세 로그 활성화 | reg add HKLM\SOFTWARE\...\OverRide /v LogLevel /t REG_DWORD /d 3 |
| 이벤트 뷰어 시작 | eventvwr.msc |
15. 정리 ── 좁히는 순서를 틀리지 않기
설정 실수 → OS / bitness 불일치 → COM 실체 문제 → 의존 관계 → 업데이트 차이
ActiveX 문제는 “Excel만의 문제”처럼 보여도, 실제로는 Office의 기본 보안 + Windows의 지원 전제 + COM 실체 등록 + 의존 런타임 + 업데이트 모델이라는 5개 층이 겹치는 문제입니다. 무작정 설정을 느슨하게 하기 전에 위에서부터 원인을 나누면, 재발하기 어려운 복구에 닿을 수 있습니다.
참고 링크
- ActiveX controls are disabled by default in Microsoft 365 and Office 2024 ─ 기본 비활성화의 영향 범위
- Enable or disable ActiveX settings in Office files ─ 사용자 조작에 가장 가까운 자료
- Update history for Office LTSC 2024 and Office 2024 ─ build 비교, 업데이트 전후 차이
- Overview of update channels for Microsoft 365 Apps ─ Current / Monthly Enterprise / Semi-Annual의 차이
- Release Information for Updates to Microsoft 365 Apps ─ 채널에서 오는 동작 차이
- Compatibility between the 32-bit and 64-bit versions of Office ─ ActiveX / COM 자산이 얽일 때의 판단 기준
- Microsoft Edge에서의 Internet Explorer 모드 ─ Enterprise Site List와 정책
- regsvr32 명령 ─ 네이티브 COM의 등록 / 해제
- Regasm.exe (어셈블리 등록 도구) ─ .NET으로 만든 COM의 등록
- Process Monitor (Procmon) ─ NAME NOT FOUND / PATH NOT FOUND 추적
- Process Explorer ─ 프로세스의 DLL 로드 상황
- Latest supported Visual C++ Redistributable Downloads ─ VC++ 런타임 부족을 확인할 곳
- .NET Framework 설치 가이드 ─ .NET Framework 버전 확인
관련 기사
같은 태그를 공유하는 최신 기사입니다. 더 가까운 주제로 지식을 넓힐 수 있습니다.
Windows 앱 외주·수탁 개발을 의뢰하기 전에 정리할 점
Windows 앱 외주·수탁 개발을 의뢰하기 전에, 기존 소프트웨어 수정, 장치 연동, COM/ActiveX, 배포·업데이트, 유지보수를 정리하는 포인트를 설명합니다.
COM/OCX/ActiveX 개발에서 막히기 쉬운 등록과 bitness의 함정
COM, OCX, ActiveX 개발에서 자주 막히는 32bit/64bit, Visual Studio 2022, regsvr32/Regasm, 관리자 권한, HKCR, STA/MTA를 실무 관점에서 정리합니다.
PowerShell에서 COM과 .NET을 호출하는 실무 ── 스크립트가 닿는 범위를 한 번에 넓히기
PowerShell에서 .NET 클래스를 호출하는 방법, Add-Type으로 C#과 Win32 API를 넣는 방법, COM 조작, Excel 프로세스 잔류와 뒷정리, Office 무인 실행이 지원되지 않는 이유, 5.1과 7의 차이까지 실무 관점...
개발자의 이상한 애정, 또는 나는 어떻게 걱정을 멈추고 Windows를 사랑하게 되었는가
Windows는 번거롭습니다. 하지만 그 번거로움은, 현실의 업무를 오랫동안 짊어져 온 OS이기 때문에 생기는 번거로움이기도 합니다.
VBScript 폐지에 대비하는 VBA·사내 도구 점검 가이드
VBScript 단계적 폐지에 대비해 VBA·Excel 매크로·사내 도구의 인벤토리, 정적 검출, 실행 로그, 대체 기술 선정, 테스트, 단계적 배포를 정리합니다.
관련 토픽
이 기사와 가까운 토픽 페이지입니다. 기사를 출발점 삼아 관련 서비스와 다른 기사로 이어집니다.
Windows 기술 토픽
Windows 개발, 장애 조사, 기존 자산 활용에 관한 KomuraSoft LLC 기사를 모은 토픽 허브입니다.
ActiveX 이관
COM / ActiveX / OCX 자산을 유지할지, 감쌀지, 교체할지의 단계적 판단을 정리한 토픽 페이지입니다.
32비트 / 64비트 상호 운용
32비트 / 64비트 상호 운용, 네이티브 경계, 관련된 Windows 설계 판단을 정리한 토픽 페이지입니다.
이 주제와 연결되는 서비스
이 기사는 다음 서비스 페이지로 이어집니다. 가까운 입구부터 확인해 주세요.
기존 자산 활용 & 이관 지원
ActiveX / OCX / COM 컴포넌트를 사용한 Excel / Word / PowerPoint / Visio 자산의 연장과 이전은, 기존 자산 활용과 이전 지원 주제와 직접 겹치기 때문입니다.
장애 조사 & 원인 분석
「예전에는 동작하던 버튼이 갑자기 반응이 없다」와 같은 Office × COM 원인 장애는, Process Explorer / Procmon / Click-to-Run 로그를 사용한 원인 분리에 맞는 주제이기 때문입니다.
기술 상담 & 설계 리뷰
Office bitness, 업데이트 채널, Trusted Publisher, IE 모드, Enterprise Site List까지 포함하는 구성 방침은, 배포 전 설계 리뷰로 정리하기 쉽기 때문입니다.
자주 묻는 질문
이 기사 주제에 대해 상담 시 자주 나오는 질문을 모았습니다.
- Office 2024나 Microsoft 365에서 ActiveX가 기본으로 비활성화되었다는 것은 무슨 뜻인가요?
- Office 2024와 Microsoft 365에서는 ActiveX 컨트롤이 기본으로 비활성화되어 있습니다. 예전에는 동작하던 Excel 버튼이나 폼, Word / PowerPoint의 포함 개체가 업데이트 뒤에 갑자기 "작동하지 않는" 것처럼 보이는 것은, 대개 프로그램 고장이 아니라 이 보안 기본값 변경이 원인입니다. 파일을 열 때 나오는 노란색 메시지 표시줄에서 [콘텐츠 사용]을 골라 일시적으로 동작하는지 시험하고, Trust Center(보안 센터)의 ActiveX 설정을 확인하는 것이 첫 단계입니다.
- Office 업데이트 뒤에 Excel의 ActiveX 버튼이 반응하지 않습니다. 무엇부터 확인해야 하나요?
- 원인은 크게 3가지로 나눌 수 있습니다. 첫째는 보안 설정 변화(Trust Center, ActiveX 기본 비활성화, 보호된 보기), 둘째는 32bit / 64bit 불일치(64bit Office에 32bit 전용 컨트롤을 올린 경우), 셋째는 COM 등록이나 의존 DLL / 런타임 부족(regsvr32 미실행, VC++ 런타임 누락)입니다. 이 순서대로 위에서부터 원인을 좁히는 것이 가장 빠릅니다. 함께 제품명·빌드 번호·Office의 bitness·OS 정보를 먼저 기록하고, 네트워크 공유나 메일 첨부에서 바로 열지 말고 로컬 폴더에서 재현 차이를 확인합니다.
- 64bit Office에서만 ActiveX 컨트롤이 작동하지 않는 이유는 무엇인가요?
- Office의 bitness와 COM / ActiveX의 bitness는 반드시 일치해야 하기 때문입니다. 64bit Office에 32bit 전용 컨트롤을 올려도 동작하지 않습니다. 벤더에 x64 버전이 있는지 확인하고, 없으면 Office 32bit로 바꾸는 방안을 검토합니다. .NET으로 만든 COM이면 regsvr32가 아니라 RegAsm을 쓰며, 32bit Office면 Framework, 64bit Office면 Framework64의 RegAsm으로 등록합니다. RegAsm의 bitness가 Office와 맞지 않으면, 레지스트리상으로는 등록에 성공해도 Office에서는 찾을 수 없는 전형적인 사고가 됩니다.
- ActiveX를 계속 쓰려면 어떻게 설정해야 하나요?
- 전체 보안을 낮추지 말고, 필요한 대상만 제한적으로 허용하는 것이 기본입니다. DisableAllActiveX 레지스트리 변경은 검증 전용이며, 항구적 대응은 신뢰할 수 있는 배포 경로와 서명으로 합니다. 구체적으로는 사내 배포 ActiveX / 매크로 / 추가 기능에 코드 서명을 하고 Trusted Publisher를 한곳에서 관리하며, Microsoft 365에서는 변경 지점을 읽기 쉬운 월별 엔터프라이즈 채널을 검토하고, 벤더가 x64 지원을 명시하지 않는 한 Office 32bit를 우선 검토합니다. 프로덕션 배포 전에는 pilot ring을 만들고, 대표 서식·대표 단말에서 빌드를 고정해 검증합니다.