2009-10-21 94 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中引入了此選項。