2010-11-20 42 views
5

He desarrollado una aplicación de servidor que usa la automatización COM de Excel 2007 para convertir algunos archivos xls. Se inició como un servicio en una instancia de Windows Datacenter, ejecutándose bajo su propio usuario, y tuve que cambiar la configuración de seguridad de DCOM ("iniciar como usuario interactivo") para que funcione.La automatización de Excel COM deja de funcionar cuando el usuario cierra la sesión

El problema es que, cuando finalizo la sesión (a través de RDP), deja de funcionar. Me conecto, funciona de nuevo.

¿Alguien ha tenido el mismo problema? Me alegro de cualquier ayuda en este punto.

Respuesta

7

Ok, por lo que no podía conseguir Excel para operar sin un usuario interactivo, ninguna cantidad de trucos de DCOMCNFG serviría. Así que simplemente configuré la autenticación automática para el usuario bajo el que se ejecuta el servicio (consulte http://support.microsoft.com/kb/315231 para obtener instrucciones).

Esto tiene el efecto de que en el inicio del servidor, ese usuario iniciará sesión como una sesión de consola interactiva. A diferencia de las sesiones de RDP, esto es permanente y hace que Excel sea feliz.

Otros consejos para los poors almas que tienen que hacer algo similar:

  • crear la carpeta C: \ Windows \ System32 [o SysWOW64] \ config \ systemprofile \ Desktop seguro de una impresora predeterminada
  • hacer está configurado para el usuario el servicio se ejecuta en
  • cambiar la configuración de DCOMCNFG (mmc -32, agregar "servicios de componentes") de Excel para ejecutar utilizando la cuenta interactiva
  • cambiar DCOM predeterminado para permitir el acceso local, el lanzamiento local y local activación para el usuario el servicio e se ejecuta en

¡Buena suerte!

+0

¿Quiere decir que realiza los "Otros consejos" que menciona simula tener un usuario interactivo siempre activo? – mateolargo

+0

Usar el inicio de sesión automático es un riesgo de seguridad. ¿Cómo podría proteger su servidor de esta manera? –

2

Hay una cosa que se llama Excel Services que se supone que hace posible el funcionamiento de Excel como un servicio de uso de SharePoint, lo que permitiría que se ejecute sin supervisión con nadie conectado.

+0

Hola Joel, gracias por la respuesta! :) En realidad estaba pensando en ti cuando depuré esto, y me di cuenta de que Excel es más difícil de automatizar que Word o Powerpoint, lo que requiere que un usuario interactivo inicie sesión para operar. Probablemente sepa por qué, después de haber trabajado en el interior. Conozco los servicios de MS Office provistos por Sharepoint, pero desafortunadamente estoy desarrollando este servicio para un competidor directo de SharePoint.^_^Publicaré la solución que he encontrado a continuación. ¡Aclamaciones! –

1

que he tenido este problema, y ​​me encontré con que la respuesta es en realidad en el DCOM Configuration.

hice lo siguiente para resolver el problema:

  1. Abra Propiedades de DCOM Excel
  2. Go a la pestaña Identity
  3. Seleccione This User
  4. Introduzca las credenciales de alguien que tiene acceso a Excel

Es posible que tenga que ir a la pestaña Security y garantizar al usuario que ha especificado anteriormente tiene los permisos adecuados.

Después de hacer esto, pude cerrar la sesión del servidor mientras seguía usando las bibliotecas de automatización de Excel COM.

0

Si la cuenta que se está ejecutando EXCEL es administrador entonces esto va a trabajar:

Para 64 bits (x64), crear esta carpeta: C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop Para 32- bits (x86), crear esta carpeta: C: \ Windows \ System32 \ config \ systemprofile \ Desktop de lo contrario para resolver este problema, siga estos pasos:

  1. acceder a su servidor como administrador
  2. Ir a " Inicie "->" Ejecutar "e ingrese" MMC comexp.msc/32 "
  3. Vaya a las propiedades de la aplicación Microsoft Excel, en Identidad, cámbielo a El usuario interactivo desde El usuario inicial (que está configurado de manera predeterminada).
  4. Vaya a las propiedades del Libro de trabajo de Microsoft Office Excel 2007, en Identidad, cámbielo a El usuario interactivo desde El usuario inicial (que está configurado de manera predeterminada).
  5. Ir a la pestaña de seguridad para aplicaciones de Microsoft Excel y seleccione Personalizar para "lanzamiento y permisos de activación" y añadir la cuenta (en virtud del cual se está ejecutando Excel) a la misma y darle "lanzamiento local" y el permiso "Activación local"
  6. ir a la pestaña de seguridad para Microsoft Office Excel 2007 y seleccione Personalizar para "permisos de acceso" y añadir la cuenta (en virtud del cual se está ejecutando Excel) a la misma y darle "Acceso local" permiso
  7. lado
0

servidor:

A) Cambie "Usuario interactivo" a "Este usuario".

B) "Este usuario" sólo funciona después de crear estas carpetas:

  • C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop
  • C: \ Windows \ System32 \ config \ systemprofile \ Desktop

C) Esperar a que ... Paso B) desencadena Windows para crear automáticamente:

  • C: \ Users \ Default \ Desktop

Nota la definición de "Usuario interactivo" es a cuestas en cualquiera que sea la activa usuario conectado al servidor. Por lo tanto, no se puede iniciar MS Office cuando ningún usuario está activo en el servidor.

Es decir, para mí, la solución era un híbrido de las soluciones ya propuestas. Usé Office 2013 (x86) en Win 2012R2. Mi problema fue en cambio con Word (para usar WordToPDF).

detalles para el Paso B:

  • de sesión a Servidor> Inicio> Ejecutar DCOMCNFG.exe (para poner en marcha servicios de componentes)> Raíz de consola> Servicios de componentes> Equipos> Mi PC> Configuración DCOM ...
  • Desplácese hasta "Microsoft Word 97 - Documento 2003" o "Aplicación Microsoft Excel" (... es decir, cualquier cosa de MS Office que necesite para iniciar) ...
  • Haga clic con el botón derecho en él y seleccione "propiedades"> pestaña Identidad> Elija "Este usuario"> ingrese las credenciales para algún usuario con acceso a MS Office en el servidor. (Utilicé un usuario con permisos de administrador.)

detalles para la Etapa C:

  • La espera varía de 5 min a la sobre-noche. Opcionalmente, cree esta carpeta manualmente (si la carpeta no existe y tiene prisa por completar la prueba).
Cuestiones relacionadas