19

Tenemos un servicio de Windows que se ejecuta en el servidor 2003. Abre un documento de Word de origen con Word Interop y luego hace algunas cosas con él. También hace lo mismo con los archivos de Excel y PowerPoint.Automatización de la oficina a través del servicio de Windows en el servidor 2008

Recientemente hemos intentado mover este servicio a una máquina con Windows 2008 Server y estamos teniendo problemas reales con él.

COMException en Microsoft.Office.Interop.Excel.Workbooks.Open COMException en Microsoft.Office.Interop.Word.Documents.Open

consigo las excepciones anteriores, cuando el servicio de Windows se está ejecutando en el servidor 2008. Al mirar al Administrador de tareas, la aplicación carga bien, pero luego se cierra de nuevo poco después.

He leído cosas sobre Vista y Server 2008 que ya no tienen una Session0, y he intentado cambiar las propiedades de seguridad de Office DCOM en consecuencia, incluida la modificación de la identidad del usuario ejecutándolas en Integrated, pero sin resultado.

¿Alguien sabe si esto es posible en absoluto? Este es un aspecto fundamental de nuestro sistema, por lo que debemos ser capaces de hacerlo.

Gracias

+2

Probablemente ya lo sepa, pero Microsoft no admite la ejecución de Word en un servidor, y _might_ break the terms of the license. – Martin

Respuesta

57

Tuve problemas para automatizar Office desde un Servicio de Windows en Windows Server 2008, aunque eso funciona bien en Windows Server 2003. El el problema también ocurre en la llamada abierta, por lo que puede ser el mismo problema.

Intenté seguir el consejo dado por H Ogawa en this MSDN thread, y pareció funcionar. Es extraño, pero felicitaciones al Sr. Ogawa por descubrirlo.

Resumen de la 'Ogawa Hack': crear una carpeta de escritorio para el perfil del sistema, como:

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

y, si se ejecuta en una máquina de 64 bits, crear otra uno, como :

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

Además, la (s) carpeta (s) necesitan permiso de escritura para cualquier usuario que esté "manejando" Office.


[Editar: corregido enlace URL]

[Editar 2: aclarado que en Windows de 64 bits, que necesita las dos carpetas, no sólo el WOW64 uno]

+5

Nota: si su aplicación está compilada en x86, use la carpeta x86 de todos modos (incluso si está ejecutando en una máquina x64) C: \ Windows \ System32 \ config \ systemprofile \ Desktop –

+0

Esto me costó 4 horas de depuración . Muchas gracias por salvarme. – troelskn

+0

No tengo idea de cómo funcionó ...... funciona como encanto :) –

0

Esto también ocurre en Vista con UAC habilitado. Puede intentar configurar la identidad de DCOM para que sea una cuenta de administrador y volver a probarla.

Recientemente comencé a tener este problema en una caja de XP tratando de abrir libros de trabajo en Excel a través de servicios de interoperabilidad, pero aún no he encontrado una solución alternativa. A mí me gustaría cualquier otra información que la comunidad pueda arrojar allí ...

1

Bueno, se quiere tenga que ejecutar "-32 MMC" (símbolo del sistema) para poner en marcha MMC de 32 bits y luego añadir servicios de componentes (archivo> Añadir menú/quitar complementos)

continuación, siga una de estas instrucciones:

http://theether.net/download/Microsoft/kb/288366.html

+0

Su sugerencia de "mmc 32" y la respuesta de A.O. me salvó el día. –

3

Si está usando Apache, es posible que también tenga que seguir estos pasos para obtener MS Word funciona correctamente (junto con todo lo descrito en otras respuestas):

A continuación se muestra una captura de pantalla que muestra los dos cuadros de diálogo le Tendrá que aparezca: enter image description here

para Apache:

Servicios-> Apache-> derecho Haga clic en (Propiedades) -> pestaña Iniciar sesión

MS Word:

lanzamiento dcomcnfg.exe-> Consola Raíz> Componente Servicios-> Computadoras-> Mi PC-> DCOM Config-> Encuentra Microsoft Aplicación-> Derecho Haga clic en (Propiedades) -> Identidad Tab

** si no puede encontrar el MS Word, asegúrese de que está iniciando la configuración correcta de DCOM (64 bit frente a 32 bit) dependiendo de qué versión de Office haya instalado.

Aquí hay dos opciones, puede configurar Apache para usar Cuenta del sistema local y marcar la casilla de verificación para PERMITIR la interacción en el escritorio. Si hace esto, entonces necesita configurar Identity para MS Word a Usuario interactivo.

De lo contrario, debe configurar ambos para el mismo usuario (Idealmente, el usuario que está conectado) como se muestra en la imagen.

Cuestiones relacionadas