我开发了一个简单的 C# Winforms 应用程序,它通过 COM 自动化加载 MS-Word 2007 文档。
这一切都非常简单直接,但是取决于我需要以编程方式启用或禁用宏以及 ActiveX 控件的文档。
可能有一种方法可以将其存储在注册表中,但我想逐个实例地控制这些设置,因为可能一次运行多个并发请求。
所以我的问题是'如何使用 COM 自动化配置信任中心设置'。
我已经用谷歌搜索了几个小时,但我只能找到 Application.AutomationSecurity 属性,但这只接受以下值:
- MsoAutomationSecurity.msoAutomationSecurityLow
- MsoAutomationSecurity.msoAutomationSecurityForceDisable
- MsoAutomationSecurity.msoAutomationSecurityByUI
然而,Word 2007 信任中心公开了以下设置:
宏设置:
- 禁用所有宏而不通知(匹配 msoAutomationSecurityForceDisable)
- 禁用所有带有通知的宏(我不需要这个)
- 禁用除数字签名宏以外的所有宏(无等效项)
- 启用所有宏(匹配 msoAutomationSecurityLow)
(来源:visguy.com)
ActiveX 控件(单独配置,我没有找到任何方法来控制这些,注意根据截图这些设置在所有应用程序之间共享)
- 禁用所有控件而不通知
- 在启用 UFI 控件之前提示我....
- 在以最小限制启用所有控件之前提示我
- 无限制地启用所有控件
我尝试了在更改这些设置时记录 MS-Word 宏的旧技巧,但没有记录这些步骤。
更新: 我在注册表中找到了 ActiveX 控件设置的以下条目。看起来 ActiveX 设置确实是全局的,除非有人证明我错了,否则不能为单个 MS-Word 实例指定。
ActiveX 已禁用
[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security] "DisableAllActiveX"=dword:00000001 "UFIControls"=dword:00000002
使用安全模式启用 ActiveX
[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security] "DisableAllActiveX"=dword:00000000 "UFIControls"=dword:00000002
没有安全模式的 ActiveX 启用
[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security] "DisableAllActiveX"=dword:00000000 "UFIControls"=dword:00000001
仍然热衷于解决宏设置问题