使用C#以编程方式配置MS-Word的信任中心设置

Jer*_*jer 8 c# automation office-2007 ms-word ms-office

我开发了一个简单的C#Winforms应用程序,它通过COM自动化加载MS-Word 2007文档.

这一切都非常简单直接,但是根据我需要以编程方式启用或禁用宏以及ActiveX控件的文档.

可能有一种方法可以将其存储在注册表中,但我希望逐个实例地控制这些设置,因为一次可能会运行多个并发请求.

所以我的问题是" 如何使用COM自动化配置信任中心设置 ".

我用谷歌搜索了几个小时,但我能找到的只是Application.AutomationSecurity属性,但这只接受以下值:

  • MsoAutomationSecurity.msoAutomationSecurityLow
  • MsoAutomationSecurity.msoAutomationSecurityForceDisable
  • MsoAutomationSecurity.msoAutomationSecurityByUI

但是,Word 2007信任中心公开了以下设置:

宏设置:

  • 禁用所有宏而不通知(匹配msoAutomationSecurityForceDisable)
  • 禁用带通知的所有宏(我不需要这个)
  • 禁用除数字签名宏之外的所有宏(无等效项)
  • 启用所有宏(匹配msoAutomationSecurityLow)

替代文字http://www.visguy.com/wp-content/uploads/2007/05/v2007-security-settings.png


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

仍然热衷于解决宏设置问题

Jer*_*jer 7

看起来我要回答我自己的问题.

我测试了它,可以确认映射如下:

宏设置:

  • msoAutomationSecurityForceDisable =禁用所有宏而不通知

  • msoAutomationSecurityByUI =禁用除数字签名宏之外的所有宏

  • msoAutomationSecurityLow =启用所有宏

据我所知,全局ActiveX设置只能通过直接编辑注册表来配置

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

在MSDN网站相关部分留下了评论