代码之家  ›  专栏  ›  技术社区  ›  Jeroen Ritmeijer

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

  •  8
  • Jeroen Ritmeijer  · 技术社区  · 15 年前

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

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

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

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

    我已经搜索了几个小时,但我所能找到的只是application.automationsecurity属性,但它只接受以下值:

    • msoAutomationSecurity.msoAutomationSecurity新建
    • msoAutomationSecurity.msoAutomationSecurityForEdisable
    • msoAutomationSecurity.msoAutomationSecurityByUI

    但是,Word 2007信任中心会显示以下设置:

    宏设置:

    • 禁用所有宏而不通知(与msoAutomationSecurityForEdisable匹配)
    • 禁用所有带有通知的宏(我不需要此宏)
    • 禁用除数字签名宏以外的所有宏(无等效宏)
    • 启用所有宏(与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\software\microsoft\office\common\security] “disableAllActivex”=dword:0000000 1 “UFIControls”=dword:0000000 2

    使用安全模式启用ActiveX

    [hkey_current_user\software\microsoft\office\common\security] “disableAllActivex”=dword:00000000 “UFIControls”=dword:0000000 2

    未启用安全模式的ActiveX

    [hkey_current_user\software\microsoft\office\common\security] “disableAllActivex”=dword:00000000 “UFIControls”=dword:0000000 1

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

    4 回复  |  直到 11 年前
        1
  •  7
  •   Jeroen Ritmeijer    15 年前

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

    我已经测试过了,可以确认映射如下:

    宏设置:

    • msautomationsecurityforcedisable=禁用所有宏 通知

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

    • msoAutomationSecurityLow=启用所有宏

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

    已禁用ActiveX

    [hkey_current_user\software\microsoft\office\common\security]“disableAllActivex”=dword:0000000 1“uficontrols”=dword:0000000 2

    使用安全模式启用ActiveX

    [hkey_current_user\software\microsoft\office\common\security]“disableAllActivex”=dword:00000000“uficontrols”=dword:0000000 2

    未启用安全模式的ActiveX

    [hkey_current_user\software\microsoft\office\common\security]“disableAllActivex”=dword:00000000“uficontrols”=dword:0000000 1

    我在 relevant section of the MSDN website

        2
  •  3
  •   etaiso    11 年前

    我知道这个线程很旧,但我今天必须弄清楚,所以经过快速的研究,我找到了 信任中心设置 :

    这适用于Word版本2010(可能是2007年,但使用12.0而不是14.0)

    enter image description here

    或在文本中:

    注册表位置:

    hkey_current_user\software\microsoft\office\14.0\word\security

    宏设置:

    名字 VBAWAVENCE

    数据 :

    禁用所有宏而不通知-

    禁用所有宏并发出通知-

    禁用所有宏(数字签名宏除外)-

    启用所有宏(…)-

    开发人员宏设置:

    名字 Access VBOM

    数据 以下内容:

    未选中-

    检查-

        3
  •  0
  •   AltF4_    11 年前

    用于Office 2010中ActiveX控件的设置

    要在没有安全模式的情况下解除ActiveX,您只需要…

    "HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security" /v UFIControls /t REG_DWORD /D 1 /F
    
        4
  •  0
  •   user3495258    11 年前

    我花了几天时间尝试同样的方法,最终发现了一种非常简单的方法,可以打开一个包含宏的.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应用程序病毒泛滥的电子表格。

    请注意,我正在运行Office2010。我不知道这个选项是在哪个版本的Office上引入的。