2009-10-21 53 views
8

我开发了一个简单的C#Winforms应用程序,它通过COM自动化加载MS-Word 2007文档。使用C#编程配置MS-Word的信任中心设置

这是非常简单和直接的,但取决于我需要编程的文档启用或禁用宏以及ActiveX控件。

可能有一种方法可以将这些信息存储在注册表中,但我希望通过实例来控制实例上的这些设置,因为一次可能会运行多个并发请求。

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

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

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

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

宏设置:

  • 禁用所有宏,并且不通知(匹配msoAutomationSecurityForceDisable)
  • 禁用与通知所有宏(我不需要这个)
  • 禁用无数字的所有宏(没有等效)
  • 启用所有宏(匹配msoAutomationSecurityLow)

alt text http://www.visguy.com/wp-content/uploads/2007/05/v2007-security-settings.png


ActiveX控件(单独配置,我还没有发现任何的方法来控制这些,需要注意的是,根据这些设置的所有应用程序之间共享的屏幕截图)

  • 禁用所有控件,而无需通知
  • 在启用UFI控件前提示我。
  • 在启用所有带有最小限制的控件之前提示我提示
  • 启用所有控件不受限制

alt text

我试图同时改变这些设置录制MS-Word宏的老把戏,但没有这些步骤被记录。

更新: 我在注册表中找到了ActiveX控件设置的以下条目。看起来像ActiveX设置确实是全球性的,不能为单个MS-Word实例指定,除非有人证明我错了。

的ActiveX残疾人

[HKEY_CURRENT_USER \软件\微软\办公室\ COMMON \安全] “DisableAllActiveX”= DWORD:00000001 “UFIControls”= DWORD:00000002

的ActiveX启用与安全模式

[HKEY_CURRENT_USER \软件\微软\办公室\ COMMON \安全] “DisableAllActiveX”= DWORD:00000000 “UFIControls”= DWORD:00000002

的ActiveX启用无安全模式

[HKEY_CURRENT_USER \软件\微软\办公室\ COMMON \安全] “DisableAllActiveX”= DWORD:00000000 “UFIControls”= DWORD:00000001

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

回答

7

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

我测试,可以确认上述的映射如下:

宏设置:

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

  • msoAutomationSecurityByUI =禁止所有宏数字除外 签名宏

  • msoAutomationSecurityLow =启用所有宏

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

的ActiveX残疾人

[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Security]“DisableAllActiveX”= dword:00000001“UFIControls”= dword:00000002

的ActiveX启用与安全模式

[HKEY_CURRENT_USER \软件\微软\办公室\ COMMON \安全] “DisableAllActiveX”= DWORD:00000000 “UFIControls”= DWORD:00000002

的ActiveX启用无安全模式

[HKEY_CURRENT_USER \软件\微软\办公室\ COMMON \安全] “DisableAllActiveX”= DWORD:00000000 “UFIControls”= DWORD:00000001

我已经留在评论

2

我知道这个线程是很老了,但是我今天必须弄清楚这样一个快速研究后,我发现这个注册表中的信任中心设置

这适用于2010的Word版本(大概2007年,但与12.0,而不是14.0)

enter image description here

或文本:

注册LOCAT ion:

HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14。0 \字\安全

宏设置:

名称:VBAWarnings

数据

禁用所有宏,并且不通知 -

禁用所有通知宏 -

禁用无数字签署的所有宏 -

启用所有宏(...) -

开发商宏设置:

名称:AccessVBOM

数据

未选中 -

经过 -

0

有关设置对ActiveX在Office 2010

到DisbaleActiveX没有安全模式下,你只需要控制.. 。

"HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security" /v UFIControls /t REG_DWORD /D 1 /F 
0

我花了几天的时间尝试相同的事情,最终发现了一种非常简单的方法,即打开包含宏的.xls文件,而不会破坏注册表或Excel的信任设置。在C#中:

Application aXL = new Application(); 
aXL.FileValidation = 
    Microsoft.Office.Core.MsoFileValidationMode.msoFileValidationSkip; 
try { 
    Workbook aBook = aXL.Workbooks.Open("K:\\Work\\ExcelTest\\BrokenMacro.xls" 
        , 0 
        , true 
        , Type.Missing 
        , Type.Missing 
        , Type.Missing 
        , true 
        , Type.Missing 
        , Type.Missing 
        , false 
        , false 
        , Type.Missing 
        , false 
        , false 
        , Type.Missing 
        /*,false*/); 
      } 
      catch (Exception e) { 
       Console.WriteLine(e); 
      } 

有关详细信息,请参见MSDN

我的Excel信任中心设置全部设置为默认值 - “禁用所有包含警告的宏”和“不信任对VBA对象模型的访问权限,如果没有msoFileValidationSkip选项,则抛出异常,使用msoFileValidationSkip选项文件打开的细。

在我看来,这是要走的路,因为它允许一个程序来打开与宏的文件,但不打开Excel应用程序病毒缠身的电子表格。

注意我正在运行Office 2010.我不知道在哪个版本的Office中引入了此选项。

相关问题