Office 2024/Microsoft 365 中 ActiveX 无法运行的原因与排查步骤

· · ActiveX, COM, Office, Microsoft 365, 32bit, 64bit, Windows, 现有资产利用

首先要了解的事

在 Office 2024 与 Microsoft 365 中,ActiveX 控件默认处于禁用状态。 以前能正常使用的 Excel 按钮、表单,以及 Word / PowerPoint 中的嵌入对象,在更新后突然看起来「无法运行」,大多 不是程序故障,而是安全默认值变更 所致。

原因大致可分为 3 类。

  1. 安全设置变化(信任中心、ActiveX 默认禁用)
  2. 32bit / 64bit 不一致(在 64bit Office 上加载仅支持 32bit 的控件)
  3. COM 注册或依赖 DLL / 运行时不足(未运行 regsvr32、缺少 VC++ 运行时)

实务铁律:按这个顺序从上往下排查最快。

Office 2024 系列 vs Microsoft 365 ── 区别在哪里

视角 Office 2024 系列(永久授权) Microsoft 365 Apps(订阅制)
更新模式 只提供安全 / 质量更新,不新增功能 按频道持续更新功能
ActiveX 默认值 默认禁用 默认禁用(相同)
注册表 / 策略路径 仍为 16.0 仍为 16.0
支持的操作系统(截至 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 上完全无法运行」
  • 是「操作系统已停止支持、Apps 仍在缓冲期」这种双重前提下运行的状态

故障排查全貌

不行OK没有不行OK不行OK复现症状采集 Office 产品名称·内部版本·bitness·操作系统信息操作系统 / Office 的支持前提是否 OK?修正前提:重新审视操作系统 / Office 版本 / 频道检查信任中心ActiveX 设置 / 受保护的视图 / 受信任文档有问题?修正设置·签名·分发方案属于旧版 Web / IE 场景?检查 IE 模式与站点列表检查 CLSID / InprocServer32 / TypeLibCOM 注册是否正常?regsvr32 / RegAsm / 重新安装检查依赖 DLL / .NET / VC++ 运行时依赖关系是否满足?修复·重新分发对应运行时采集日志 / Procmon / Process Explorer比对内部版本差异·安全更新差异

Step 1 ── 采集环境信息

首先务必记录以下信息。因为要靠 数值 而不是感觉来判断。

Office 端

  • 【文件】→【账户】→【产品信息】 中确认
    • 产品名称(区分 Office 2024 / Microsoft 365)
    • 版本与 内部版本号(最重要)
    • 安装类型(Click-to-Run)
  • 【关于 Excel】/【关于 Word】 等产品信息对话框中确认是 32bit 还是 64bit

Windows 端

# 操作系统基本信息
Get-CimInstance Win32_OperatingSystem |
  Select-Object Caption, Version, BuildNumber, OSArchitecture

# Office 进程的可执行文件路径
Get-Process WINWORD, EXCEL, POWERPNT, VISIO -ErrorAction SilentlyContinue |
  Select-Object ProcessName, Path

常见误区

误区 正确思路
用「是最新版本」了事 要确认 内部版本号。Microsoft 365 的频道差异很大
在 64bit Office 上加载仅支持 32bit 的 COM / ActiveX Office 的 bitness 与 COM 的 bitness 必须一致
认定「Windows 10 就是不行」 处于过渡缓冲期,有可能仍能运行,但前提并不稳定

Step 2 ── 检查信任中心与安全设置

这一步要做的是区分 「文件本身被阻止」 还是 「COM 实体加载失败」

检查清单(依次向下)

# 检查项 检查位置 常见原因
1 ActiveX 消息栏 打开文件时出现的黄色消息栏 默认禁用。尝试用 【启用内容】 看是否能临时运行
2 信任中心 > ActiveX 设置 【文件】>【选项】>【信任中心】 是否设置为「未经通知即禁用全部」
3 受保护的视图 信任中心 > 受保护的视图 从网络共享或邮件附件打开会被阻止
4 受信任的文档 信任中心 > 受信任的文档 一旦被信任过,警告就不会再出现,复现结果会因终端而异
5 受信任的发布者 信任中心 > 受信任的发布者 即使有签名,若证书未分发也不会被允许
6 宏设置 信任中心 > 宏设置 宏与 ActiveX 是不同的设置,但有时会综合产生影响

先尝试这些

  1. 将出问题的文件复制到 本地受管理的文件夹(例如 C:\Temp),另存为新文件
  2. 避免直接从网络共享或邮件附件打开(排除受保护的视图的影响)
  3. 安全模式 启动 Office,排除加载项的影响
excel /safe
winword /safe
powerpnt /safe

Step 3 ── 确认是否依赖 IE 模式

原本以为是「普通的 ActiveX 故障」,实际上有时是因为 Edge 的 IE 模式未配置 所致。

  • IE 模式不是整个浏览器的开关,而是 只应用于已添加到 Enterprise Site List 的网站
  • 如果只有内部 Web 系统的一部分无法运行,请检查该网站是否属于 IE 模式对象

检查位置如下:

  • Edge 策略:管理模板 > Microsoft Edge
  • 注册表:HKLM\SOFTWARE\Policies\Microsoft\Edge
  • 诊断页面:edge://compat/iediagnostic

Step 4 ── 检查 COM 注册

如果信任中心没有问题,接下来要确认 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

.NET 编写的 COM(重要)

.NET 程序集不能使用 regsvr32,需要使用 RegAsm。

:: 64bit Windows 上的 32bit Office → 使用 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 却找不到。

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 或注册表项没找到。

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

主要注册表 / 策略速查表

必须记住的 4 个路径

用途 路径
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}

在 64bit Windows 上使用 32bit Office 时,COM 相关项目也要检查 Wow6432Node 之下。

常用测试注册表(仅供验证)

Windows Registry Editor Version 5.00

; 仅供测试:解除 ActiveX 全面禁用
[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security]
"DisableAllActiveX"=dword:00000000

警告:这些设置仅供验证使用。永久方案请通过「可信的分发渠道与签名」来实现。

常见症状与对策

症状 最可能的原因 首先尝试的做法
更新后按钮没有反应 ActiveX 默认禁用 消息栏 →【启用内容】→ 检查信任中心
只在 64bit Office 上失败 仅支持 32bit 的 COM / ActiveX 向厂商确认是否有 x64 版本,没有则切换到 32bit Office
只有特定电脑无法运行 COM 未注册 / 注册损坏 reg query 确认 CLSID → 用 regsvr32 重新注册
DLL 存在却无法加载 依赖 DLL / VC++ 运行时不足 用 Procmon 追踪 NAME NOT FOUND
从网络共享或邮件附件打开时失败 受保护的视图 / MOTW 复制到本地文件夹比对复现差异
只有内部 Web 系统的一部分失败 IE 模式未配置 将目标网站添加到 Enterprise Site List
已签名却仍不被允许 证书未分发 / 受信任的发布者未注册 确认代码签名的有效性与证书分发情况
沿用 MSI 时代的部署流程导致行为变化 转向 Click-to-Run 前提 重新审视旧脚本或以自注册为前提的设计

企业推荐设置

永久方案的基本原则是 「不是降低整体安全性,而是只针对必要对象做有限度的允许」

项目 建议
更新频道(Microsoft 365) 对旧版 ActiveX 依赖度高的终端,建议使用 月度企业版频道(变更较易掌握)
Office bitness 除非厂商明确声明支持 x64,否则优先考虑 32bit Office
Trusted Locations 网络上的信任位置 原则上禁止,需要时采用例外申请方式
签名 自行分发的 ActiveX / 宏 / 加载项要 进行代码签名,并集中管理 Trusted Publisher
IE 模式 只将必要的 URL 添加到 Enterprise Site List(避免整体老化)
部署前验证 正式分发前建立 pilot ring,用具代表性的报表 / 终端固定内部版本验证

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>

最后手段 ── 修复

  • 快速修复 / 联机修复 对设置或注册损坏有效
  • 但无法解决 x86 / x64 不一致,或签名 / 策略问题本身
  • 修复要放在「最后」执行(先执行会污染调查用的日志)

命令速查表

目的 命令
以安全模式启动 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

总结 ── 别弄错排查顺序

设置错误 → 操作系统 / bitness 不一致 → COM 实体问题 → 依赖关系 → 更新差异

ActiveX 的问题乍看只是「Excel 的问题」,实际上是 Office 的默认安全 + Windows 的支持前提 + COM 实体注册 + 依赖运行时 + 更新模式 这 5 层交织在一起的问题。与其贸然放宽设置,依次从上往下排查,才能得到不容易再次发生的修复方案。

参考链接

共享相同标签的最新文章。可以围绕相近的主题进一步加深理解。

常见问题

汇总了咨询这一主题时常见的问题。

Office 2024 或 Microsoft 365 中 ActiveX 默认被禁用是什么意思?
在 Office 2024 与 Microsoft 365 中,ActiveX 控件默认处于禁用状态。以前能正常使用的 Excel 按钮、表单,以及 Word / PowerPoint 中的嵌入对象,在更新后突然「无法运行」,大多不是程序故障,而是这一安全默认值变更所致。打开文件时出现的黄色消息栏中选择【启用内容】,看是否能临时运行,并检查信任中心(Trust Center)的 ActiveX 设置,是第一步该做的事。
Office 更新后,Excel 的 ActiveX 按钮变得没有反应。应该先检查什么?
原因大致可分为 3 类:第一类是安全设置变化(信任中心、ActiveX 默认禁用、受保护的视图),第二类是 32bit / 64bit 不一致(在 64bit Office 上加载仅支持 32bit 的控件),第三类是 COM 注册或依赖 DLL / 运行时不足(未运行 regsvr32、缺少 VC++ 运行时)。按这个顺序从上往下排查最快。同时,一开始就应记录产品名称、内部版本号、Office 的 bitness、操作系统信息,并避免直接从网络共享或邮件附件打开,改用本地文件夹比对复现差异。
为什么只有在 64bit Office 上 ActiveX 控件无法运行?
因为 Office 的 bitness 与 COM / ActiveX 的 bitness 必须一致。在 64bit Office 上加载仅支持 32bit 的控件不会运行。请向厂商确认是否有 x64 版本,如果没有则考虑切换到 32bit Office。如果是用 .NET 编写的 COM,要用 RegAsm 而不是 regsvr32:32bit Office 用 Framework、64bit Office 用 Framework64 中的 RegAsm 来注册。如果 RegAsm 的 bitness 与 Office 不一致,就会出现注册表中显示注册成功,但 Office 却找不到的典型事故。
要让 ActiveX 能够永久使用,应该怎么设置?
基本原则不是全面降低安全性,而是只针对必要的对象做有限度的允许。DisableAllActiveX 这项注册表更改纯粹用于验证,永久方案要依靠可信的分发渠道与签名来完成。具体来说,为自行分发的 ActiveX / 宏 / 加载项进行代码签名并集中管理 Trusted Publisher,在 Microsoft 365 中可考虑采用变更较易掌握的月度企业版频道,除非厂商明确声明支持 x64,否则优先考虑 32bit Office。正式分发前应建立 pilot ring,用具代表性的报表和终端固定内部版本进行验证。

作者简介

本文作者的个人简介页面。

Go Komura

小村软件有限公司 代表

以 Windows 软件开发、技术咨询与故障排查为中心,擅长难以复现的故障调查,以及既有资产仍在运行的项目。

返回博客列表