excel com automation dcom

La automatización de Excel COM deja de funcionar cuando el usuario cierra la sesión



automation dcom (5)

Hay una cosa llamada Excel Services que se supone permite ejecutar Excel como un servicio usando SharePoint, lo que le permite funcionar sin supervisión sin que nadie inicie sesión.

Desarrollé 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.

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.


Lado del servidor:

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

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

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

C) Espere ... Paso B) activa Windows para crear automáticamente:

  • C: / Users / Default / Desktop

Tenga en cuenta que la definición de "Usuario interactivo" se utiliza de forma paralela en lo que sea que el usuario con sesión iniciada en el 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:

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

Detalles para el Paso C:

  • La espera varía de 5 minutos a más de la noche. Opcionalmente, cree esta carpeta manualmente (si la carpeta no existe y tiene prisa por completar la prueba).

Ok, entonces no pude hacer que Excel funcionara sin un usuario interactivo, ninguna cantidad de trucos de DCOMCNFG serviría. Así que simplemente configuré la autenticación automática para el usuario con 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 las almas pobres que tienen que hacer algo similar:

  • crea la carpeta C: / Windows / System32 [o SysWOW64] / config / systemprofile / Desktop
  • asegúrese de que una impresora predeterminada esté configurada para el usuario que el servicio ejecuta bajo
  • cambie la configuración DCOMCNFG (mmc -32, agregue "servicios de componentes") de Excel para ejecutar utilizando la cuenta interactiva
  • cambie los valores predeterminados globales de DCOM para permitir el acceso local, el lanzamiento local y la activación local para el usuario que el servicio ejecuta bajo

¡Buena suerte!


Si la cuenta que ejecuta EXCEL es administrador, entonces esto funcionará:

Para 64 bits (x64), cree esta carpeta: C: / Windows / SysWOW64 / config / systemprofile / Desktop Para 32 bits (x86), cree esta carpeta: C: / Windows / System32 / config / systemprofile / Desktop De lo contrario Para resuelve este problema, sigue estos pasos:

  1. Ingrese a su Servidor como administrador
  2. Vaya a "Inicio" -> "Ejecutar" y escriba "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 de inicio (que está configurado de manera predeterminada).
  5. Vaya a la pestaña Seguridad para la aplicación Microsoft Excel y seleccione Personalizar para "Permisos de inicio y activación" y agregue la CUENTA (bajo la cual se ejecuta EXCEL) y asígnele el permiso "Lanzamiento local" y "Activación local".
  6. Vaya a la pestaña Seguridad del Libro de trabajo de Microsoft Office Excel 2007 y seleccione Personalizar para "Permisos de acceso" y añada CUENTA (bajo la cual se ejecuta EXCEL) y otorgue el permiso "Acceso local".

Tuve este problema y descubrí que la respuesta está en la DCOM Configuration.

Hice lo siguiente para resolver el problema:

  1. Abra las propiedades DCOM de Excel
  2. Ve a la pestaña Identity
  3. Seleccione This User
  4. Ingrese las credenciales de alguien que tenga acceso a Excel

Es posible que deba acceder a la pestaña Security y asegurarse de que el usuario que ha especificado anteriormente tenga los permisos adecuados.

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