2009-10-21 9 views
8

Ho sviluppato una semplice applicazione C# Winforms che carica documenti MS-Word 2007 tramite l'automazione COM.Configurazione programmatica delle impostazioni di Trust Center di MS-Word tramite C#

Questo è tutto molto semplice e diretto, tuttavia a seconda del documento ho bisogno di programmare abilmente o disabilitare i macro e controlli ActiveX.

Probabilmente esiste un modo per memorizzarlo nel registro, ma voglio controllare queste impostazioni su un'istanza per istanza in quanto potrebbero essere in esecuzione più richieste simultanee alla volta.

Quindi la mia domanda è 'come configurare le impostazioni del centro di fiducia utilizzando l'automazione COM'.

Ho Googled per ore, ma tutto quello che ho potuto trovare è la proprietà Application.AutomationSecurity, ma questo accetta solo i seguenti valori:

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

il Centro protezione Word 2007 tuttavia espone il seguenti impostazioni:

Macro Regolazioni:

  • Disattiva tutte le macro senza notifica (partite msoAutomationSecurityForceDisable)
  • Disattiva tutte le macro con le notifiche (Non ho bisogno di questo)
  • Disattiva tutte le macro tranne in digitale macro firmate (Nessun equivalente)
  • Attiva tutte le macro (partite MsoAutomationSecurityLow)

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


controlli ActiveX (configurati separatamente, non ho trovato alcun modo per controllare questi, si noti che in base alla schermata queste impostazioni sono condivise tra tutte le applicazioni)

  • Disable tutti i controlli senza notifica
  • mi conferma prima di attivare controlli UFI ....
  • mi conferma prima di attivare tutti i controlli con erstrictions minimi
  • Attiva tutti i controlli senza restrizioni

alt text

Ho provato il vecchio trucco di registrazione di una macro di MS-Word durante la modifica di queste impostazioni, ma nessuno di questi passaggi sono registrati.

Aggiornamento: Ho trovato le voci seguenti per le impostazioni dei controlli ActiveX nel registro.Sembra che le impostazioni di ActiveX siano effettivamente globali e non possano essere specificate per una singola istanza di MS-Word a meno che qualcuno non mi provi male.

ActiveX disabili

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

ActiveX abilitato con la modalità sicura

[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Security] "DisableAllActiveX" = dword: 00000000 "UFIControls" = dword: 00000002

ActiveX permessi a senza la modalità provvisoria

[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Security] "DisableAllActiveX" = dword: 00000000 "UFIControls" = dword: 00000001

ancora desiderosi di risolvere la macro problema impostazioni

risposta

7

Sembra che risponderò alla mia domanda.

ho provato e posso confermare le mappature sono i seguenti:

Macro Regolazioni:

  • msoAutomationSecurityForceDisable = Disattiva tutte le macro senza notifica

  • msoAutomationSecurityByUI = Disabilita tutto macro escluso digitalmente macro firmate

  • msoAutomationSecurityLow = Attiva tutte le macro

Per quanto a mia conoscenza, le impostazioni ActiveX globali possono essere configurate solo modificando direttamente il Registro di sistema

ActiveX disabili

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

ActiveX abilitato con la modalità provvisoria

[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Security] "DisableAllActiveX" = dword: 00000000 "UFIControls" = dword: 00000002

ActiveX abilitati senza la modalità provvisoria

[HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ Common \ Security] "DisableAllActiveX" = dword: 00000000 "UFIControls" = dword: 00000001

mi hanno lasciato un commento nel relevant section of the MSDN website

2

So che questa discussione è piuttosto vecchio, ma ho dovuto capirlo oggi così dopo una veloce ricerca ho trovato questo registro per i su Impostazioni Centro:

Questo vale per Word versione 2010 (e probabilmente del 2007, ma con 12,0 invece di 14,0)

enter image description here

o in modalità testo:

Locat Registro ione:

HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Word \ Security

Macro Regolazioni:

Nome: VBAWarnings

dati:

Disattiva tutte le macro senza notifica -

Disabilita tutto macro con notifica -

Disattiva tutte le macro tranne con firma digitale -

Attiva tutte le macro (...) -

sviluppatori Impostazioni macro:

Nome: AccessVBOM

dati:

non controllato -

Controllato -

0

Per l'impostazione per controlli ActiveX in Office 2010

a DisbaleActiveX senza la modalità sicura è sufficiente ..

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

Ho passato un paio di giorni a provare la stessa cosa e alla fine ho scoperto un modo molto semplice per aprire un file .xls contenente macro, senza problemi con il registro o con le impostazioni di fiducia di Excel. In 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); 
      } 

Vedere MSDN per dettagli.

My Excel impostazione centro fiducia erano tutti insieme i valori di default -.. "Disattiva tutte le macro con avvisi", e "non si fidano l'accesso al modello a oggetti di VBA Senza l'opzione msoFileValidationSkip è stata lanciata un'eccezione Con l'opzione msoFileValidationSkip la file aperto bene.

mi sembra che questa sia la strada da percorrere, in quanto permette un programma per aprire i file con le macro, ma non si apre il virus applicazione fogli di calcolo Excel cavalcato.

si noti che Sto utilizzando Office 2010. Non so su quale versione di Office è stata introdotta questa opzione