警告: 本文包含的信息向你展示了如何控制 Office 的安全设置。你可以更改这些安全设置以提高或降低安全状态。在你进行这些更改之前,我们建议你评估为配置此设置所做的任何更改的相关风险。
简介
本文介绍了可供用户和 IT 管理员使用的设置,这些设置通过 Microsoft Office 删除位列表来控制是否以及如何加载 COM 对象。
有关此功能所基于的 Windows Internet Explorer 删除位行为的详细信息,包括如何设置允许加载更新的 ActiveX 控件的 AlternateCLSID,请参见如何停止 ActiveX 控件在 Internet Explorer 中运行。
此指南适用于Microsoft Word、Microsoft Excel、Microsoft PowerPoint、Microsoft Publisher 和 Microsoft Visio。
Office COM 删除位
将 Office COM 删除位引入安全更新 MS10-036 中,用于阻止从 Office 文档嵌入或链接时运行特定的 COM 对象。
COM 删除位功能已在 KB3178703 中更新,以完全阻止 Office 在进程内激活 COM 对象。此更新是原始行为的超集,其中,除了阻止嵌入或链接在 Office 文档中的 COM 对象,这还将阻止通过诸如加载项之类的其他方式在 Office 进程中加载 COM 对象的任何实例。
这些特定的 COM 对象包括 ActiveX 控件和 OLE 对象。通过注册表,在使用 Office 时,你可以独立控制阻止哪些 COM 对象。
备注:我们不建议删除为 COM 对象设置的删除位。如果这样做,可能会产生安全漏洞。设置删除位的原因通常很充分。因此,在取消 ActiveX 控件时必须非常小心。
当你必须将新 ActiveX 控件的 CLSID(并且此 ActiveX 控件已修改以减少安全威胁)与应用了 Office COM 删除位的 ActiveX 控件的 CLSID 相关联时,可以添加一个 AlternateCLSID(也称为“Phoenix 位”)。Office 仅在使用 ActiveX 控件 COM 对象时才支持 AlternateCLSID 。
备注:Office 的删除位列表优先于 Internet Explorer 的删除位列表。例如,可以为同一 ActiveX 控件设置 Office COM 删除位和 Internet Explorer ActiveX 删除位。但是 AlternateCLSID 只设置在 Internet Explorer 的列表上。在这种场景下,两个设置之间存在冲突。在这种情况下,Office COM 删除位设置优先,并且不加载控件。
设置 Office COM 删除位
重要:
-
此节内容、方法或任务含有教你如何修改注册表的步骤。但是,如果不正确地修改注册表,可能会出现严重的问题。因此,请务必仔细遵循这些步骤。为了以防万一,请在修改注册表之前对其进行备份。到时候,如果出现问题,则可恢复注册表。有关如何备份和还原注册表的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:
-
322756 如何在 Windows 中备份和还原注册表
在注册表中设置 Office COM 删除位的位置如下所示:
对于 Office 2013 和 Office 2010:
-
对于 64 位 Windows 上的 64 位 Office(或 32 位 Windows 上的 32 位 Office)。
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Common\COM Compatibility\{CLSID}
对于 64 位 Windows 上的 32 位 Office:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Office\Common\COM Compatibility\{CLSID}
对于 Office 2016:
-
对于 64 位 Windows 上的 64 位 Office(或 32 位 Windows 上的 32 位 Office):
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\16.0\Common\COM Compatibility\{CLSID}
-
对于 64 位 Windows 上的 32 位 Office:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Office\16.0\Common\COM Compatibility\{CLSID}
在这种情况下,CLSID 是 COM 对象的类标识符。
若要启用 Office COM 删除位,请执行以下步骤:
-
将注册表子项以及要阻止加载的 ActiveX 控件或 OLE 对象的 CLSID 一起添加。
-
将 REG_DWORD 添加到此称为 Compatibility Flags 的子项,然后将其值设为 0x00000400。
例如,在 Office 2016 上为具有 CLSID {77061A9C-2F18-4f38-B294-F6BCC8443D24} 的对象设置 Office COM 删除位,遵循以下步骤:
-
找到以下注册表子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\COM Compatibility -
添加值为 {77061A9C-2F18-4f38-B294-F6BCC8443D24} 的子项。在这种情况下,生成的路径如下所示:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\COM Compatibility\{77061A9C-2F18-4f38-B294-F6BCC8443D24} -
将 REG_DWORD 添加到此称为 Compatibility Flags 的子项,然后将其值设为 0x00000400。
现在将 Office COM 删除位设置为阻止在 Office 内激活此对象。
如何在链接和嵌入方案中仅阻止 COM
如前所述,已更新 COM 删除位功能,以此阻止在 Office 中激活所有指定的 COM 对象。
为了仅阻止从 Office 文档中嵌入或链接的 COM 对象,请执行以下步骤:
-
根据“设置 Office 删除位”下的说明,将 CLSID 添加到 COM 删除位(如果它已经不在列表中)
-
在被阻止的 CLSID 的子项下,添加名为 ActivationFilterOverride 的 REG_DWORD 值,将其值设置为 0x00000001。
例如,在 Office 2016 上为具有 CLSID {77061A9C-2F18-4f38-B294-F6BCC8443D24} 的对象配置 COM 删除位,以仅在链接和嵌入方案中阻止,请遵循以下步骤:
-
找到以下注册表子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\COM Compatibility -
添加一个子项,其值为 {77061A9C-2F18-4f38-B294-F6BCC8443D24}。在这种情况下,生成的路径如下所示:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\COM Compatibility\{77061A9C-2F18-4f38-B294-F6BCC8443D24} -
将 REG_DWORD 添加到此称为 Compatibility Flags 的子项,然后将其值设为 0x00000400。
-
将 REG_DWORD 添加到此称为 ActivationFilterOverride 的子项,然后将其值设为 0x00000001。
现在,将 Office COM 删除位设置为仅在 Office 文档中链接或嵌入此 COM 对象时才阻止该对象。
默认阻止激活的控件
控件 |
CLSID |
ScriptMoniker |
06290BD3-48AA-11D2-8432-006008C3FBFC |
SoapActivator |
ECABAFD0-7F19-11D2-978E-0000F8757E2A |
SoapMoniker |
ECABB0C7-7F19-11D2-978E-0000F8757E2A |
PartitionMoniker |
ECABB0C5-7F19-11D2-978E-0000F8757E2A |
QueueMoniker |
ECABAFC7-7F19-11D2-978E-0000F8757E2A |
HTMLApplication |
3050F4D8-98B5-11CF-BB82-00AA00BDCE0B |
ScripletContext |
06290BD0-48AA-11D2-8432-006008C3FBFC |
ScripletConstructor |
06290BD1-48AA-11D2-8432-006008C3FBFC |
ScripletFactory |
06290BD2-48AA-11D2-8432-006008C3FBFC |
ScripletHostEncode |
06290BD4-48AA-11D2-8432-006008C3FBFC |
ScripletTypeLib |
06290BD5-48AA-11D2-8432-006008C3FBFC |
ScripletHandler_Automation |
06290BD8-48AA-11D2-8432-006008C3FBFC |
ScripletHandler_Event |
06290BD9-48AA-11D2-8432-006008C3FBFC |
ScripletHandler_ASP |
06290BDA-48AA-11D2-8432-006008C3FBFC |
ScripletHandler_Behavior |
06290BDB-48AA-11D2-8432-006008C3FBFC |
XMLFeed |
528D46B3-3A4B-4B13-BF74-D9CBD7306E07 |
Scriptlet |
AE24FDAE-03C6-11D1-8B76-0080C744F389 |
HtmlFile_FullWindowEmbed |
25336921-03F9-11CF-8FD0-00AA00686F13 |
Mhtmlfile |
3050F3D9-98B5-11CF-BB82-00AA00BDCE0B |
Microsoft HTA 文档 6.0 |
3050F5C8-98B5-11CF-BB82-00AA00BDCE0B |
DHTMLEdit.DHTMLEdit.1 |
2D360200-FFF5-11D1-8D03-00A0C959BC0A |
DHTMLSafe.DHTMLSafe.1 |
2D360201-FFF5-11D1-8D03-00A0C959BC0A |
VB脚本语言 |
B54F3741-5B07-11cf-A4B0-00AA004A55E8 |
VB脚本语言创作 |
B54F3742-5B07-11cf-A4B0-00AA004A55E8 |
VBScript 语言编码 |
B54F3743-5B07-11cf-A4B0-00AA004A55E8 |
VBScript 主机编码 |
85131631-480C-11D2-B1F9-00C04F86C324 |
Shockwave Flash Object |
D27CDB6E-AE6D-11cf-96B8-444553540000 |
Macromedia Flash工厂对象 |
D27CDB70-AE6D-11cf-96B8-444553540000 |
Microsoft Silverlight |
DFEAF541-F3E1-4c24-ACAC-99C30715084A |
Adobe Shockwave Player |
233C1507-6A77-46A4-9443-F871F945D258 |
Python 控件 |
DF630910-1C1D-11D0-AE36-8C0F5E000000 |
默认阻止嵌入的控件
控件 |
CLSID |
Shell.Explorer.2 |
8856F961-340A-11D0-A96B-00C04FD705A2 |
Htmlfile |
25336920-03F9-11CF-8FD0-00AA00686F13 |
用于弹出窗口的 Microsoft HTML 文档 |
3050F67D-98B5-11CF-BB82-00AA00BDCE0B |
备注:此列表是已阻止且可能更改的控件的快照