2009-10-21 8 views
8

He desarrollado una aplicación simple C# Winforms que carga documentos de MS-Word 2007 a través de la automatización COM.Configurando programáticamente la configuración del Centro de confianza de MS-Word usando C#

Todo esto es muy simple y sencillo, sin embargo, según el documento, necesito habilitar o deshabilitar las macros de manera programática, así como los controles ActiveX.

Probablemente haya una manera de almacenar esto en el registro, pero quiero controlar esta configuración instancia por instancia, ya que varias solicitudes simultáneas pueden estar ejecutándose a la vez.

Así que mi pregunta es 'cómo configuro la configuración del centro de confianza usando la automatización COM'.

He buscado en Google durante horas, pero todo lo que he podido encontrar es la propiedad Application.AutomationSecurity, pero esto sólo acepta los siguientes valores:

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

El Word 2007 Trust Center expone sin embargo el siguientes ajustes:

Macro Ajustes:

  • Deshabilitar todas las macros sin notificación (partidos msoAutomationSecurityForceDisable)
  • Deshabilitar todas las macros con notificaciones (no necesito éste)
  • Deshabilitar todas las macros excepto digitalmente macros firmadas (No hay equivalente)
  • Habilitar todas las macros (partidos) msoAutomationSecurityLow

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


controles ActiveX (configurados por separado, no he encontrado ninguna manera de controlar estos, cabe destacar que de acuerdo con la pantalla estos valores son compartidos entre todas las aplicaciones)

  • Desactivar todos los controles sin notificación
  • Preguntarme antes de habilitar los controles UFI ....
  • Preguntarme antes de habilitar todos los controles con etricciones mínimas
  • permitir que todos los controles sin restricciones

alt text

He intentado el viejo truco de la grabación de una macro MS-Word al cambiar estos ajustes, pero ninguno de estos pasos se registran.

Actualización: He encontrado las siguientes entradas para la configuración de controles ActiveX en el registro.Parece que la configuración de ActiveX es global y no se puede especificar para una sola instancia de MS-Word a menos que alguien me demuestre que está equivocado.

ActiveX discapacitados

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

ActiveX Se activa con el modo seguro

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

ActiveX habilita sin modo seguro

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

Aún dispuestos a resolver la macro problema de configuración

Respuesta

7

Parece que voy a responder mi propia pregunta.

Lo he probado y puedo confirmar las asignaciones son las siguientes:

Configuración de macros:

  • MsoAutomationSecurityForceDisable = Deshabilitar todas las macros sin notificación

  • msoAutomationSecurityByUI = Deshabilitar todos macros excepto digitalmente macros firmadas

  • msoAutomationSecurityLow = Habilitar todas las macros

A lo mejor de mi conocimiento la configuración global ActiveX sólo se pueden configurar editando directamente el registro

ActiveX discapacitados

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

ActiveX Se activa con el modo seguro

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

ActiveX habilitado y sin modo seguro

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

me han dejado un comentario en el relevant section of the MSDN website

2

Sé que este hilo es bastante antiguo, pero tenía que averiguarlo hoy así que después de una búsqueda rápida he encontrado este registro para la Configuración del Centro de confianza:

Esto se aplica a Word versión 2010 (y probablemente de 2007, pero con 12,0 en lugar de 14,0)

enter image description here

O en el texto:

locat Registro ion:

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

Configuración de macros:

Nombre: VBAWarnings

datos:

Deshabilitar todas las macros sin notificación -

Deshabilitar todos macros con notificación -

Desactivar todas las macros excepto las firmadas digitalmente -

Habilitar todas las macros (...) -

Desarrollador Configuración de macros:

Nombre: AccessVBOM

datos:

sin control -

cuadros -

0

Para el ajuste para los controles ActiveX en Office 2010

a DisbaleActiveX sin modo seguro sólo es necesario ..

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

He pasado un par de días intentando lo mismo y finalmente descubrí una forma muy simple de abrir un archivo .xls que contiene macros, sin interferir con el registro o la configuración de confianza de Excel. En 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); 
      } 

Ver MSDN para más detalles.

La configuración de mi centro de confianza de Excel estaba configurada en valores predeterminados - "Deshabilitar todas las macros con advertencias" y "No confíe en el acceso al modelo de objetos de VBA." Sin la opción msoFileValidationSkip se produjo una excepción. archivo abierto bien.

me parece que este es el camino a seguir, ya que permite un programa para abrir archivos con macros, pero no se abre el virus de la aplicación de hojas de cálculo Excel montado.

Tenga en cuenta que Estoy ejecutando Office 2010. No sé en qué versión de Office se introdujo esta opción.

Cuestiones relacionadas