2009-07-27 49 views
8

Estoy tratando de editar un documento de Word desde VB.NET utilizando en su mayor parte este código:Recuperando el generador de clases COM para el error componente, mientras que la generación de documento de Word

Cómo automatizar Word desde Visual Basic .NET para crear un nuevo documento http://support.microsoft.com/kb/316383

Funciona bien en mi máquina, pero cuando publico en el servidor me sale el siguiente error.

Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005.

El error real ocurre cuando intento acaba de crear un objeto de aplicación palabra

Dim oWord As New Word.Application 

mediante Visual Studio 2008 y VB.NET 3.5. Hice una referencia a la "Biblioteca de objetos de Microsoft Word 10.0" y veo el archivo Interop.Word.dll en el directorio bin.

El uso de MS Office 2003 en la máquina de desarrollo y Windows Server 2003

todavía bastante nuevo para .NET y no tienen mucho conocimiento acerca de servidor de ventanas, pero "UnauthorizedAccessException" suena como un problema de permisos. Me pregunto si alguien podría señalarme en la dirección correcta sobre lo que podría necesitar para darle acceso a mi pequeña aplicación para usar word.

Respuesta

7

Definitivamente suena como un problema de permisos. ¿Estás ejecutando tu código en un servicio de Windows? El servicio normalmente se ejecuta como Sistema local, que puede no tener permiso para acceder al modelo de objetos de Word. Además, si la palabra ya se está ejecutando utilizando las credenciales de algún otro usuario, entonces su programa no podrá acceder a él a través de COM utilizando credenciales diferentes. Las aplicaciones de oficina tienden a ser una sola instancia que parece exacerbar este problema.

+0

Es bastante interesante cuando entré al sistema y ejecuté Word, ejecuté el instalador. Supongo que nadie corrió una palabra antes en este usuario. No resolvió mi problema pero me pregunto incluso sin el permiso si eso hubiera impedido que funcionara. No, mi código es una aplicación web. Si bien esta es una aplicación pequeña que rara vez se usa, nunca consideré qué sucedería si dos personas intentaran ejecutarla al mismo tiempo. Gracias por esa contribución. ¿Hay alguna forma de ver si alguien más está accediendo al objeto COM? Estoy bastante seguro de que no hay nada más, pero ni siquiera sabría dónde comprobar eso. – TheDPQ

+0

La aplicación web se está ejecutando como ¿qué usuario? En IIS 7, por ejemplo, el grupo de aplicaciones se ejecutará como un sistema local que probablemente tendrá el mismo problema. –

+0

Nuevamente disculpe mi ignorancia, pero ¿de qué está hablando es de "Servicio de red"? Es la identidad que el grupo de aplicaciones está configurado para usar. – TheDPQ

0

Parece que puede haber un problema de permiso en DCOM. Intente editar los permisos de Word en la configuración de DCOM.

+0

Encontramos algunas personas que hacen referencia a http://blog.crowe.co.nz/archive/2006/03/02/589.aspx pero es para Excel. No ayudó, el error es el mismo pero el número de error cambió. Se cambió a: 80080005. System.Runtime.InteropServices.COMException en lugar de System.UnauthorizedAccessException – TheDPQ

0

que estaba experimentando el mismo problema y el área del problema que encontré fue "configuración de seguridad para Microsoft Word en DCOM". En el siguiente enlace puede encontrar una guía paso a paso para saber cómo configurar componentes en DCOM, repetir estos pasos para WORD y su problema se resolverá.

http://www.biocompsystems.com/_public/DCOMConfigurationStepbyStepForXP.doc

Gracias, Sushil Jinder

0

Ir a Inicio -> Ejecutar
tipo regedit -32 y pulse la tecla ENTER.
- Se abrirá el Editor del registro.
Vaya en Registro HKEY_CLASSES_ROOT \ Word.Application
Seleccionar Word.Application y establecer el permiso completo por debajo de los usuarios: -
administrador, administradores, Servicio Local, Sistema, servicio, interactivo y usuarios.

1

En mi caso, Word se ejecuta a través de un Servicio de Windows bajo una cuenta de servicio.

El problema era que la carpeta de escritorio no existía en C:\Windows\System32\config\systemprofile (o en C:\Windows\SysWOW64\config\systemprofile).

Agregándolo resolvió el problema para mí.

0

Tuve el mismo problema al generar un documento de Word. El problema lo resolví comprobando el administrador de tareas y terminando el proceso actualmente en ejecución WINWORD.EXEs y luego ejecuté mi código nuevamente. El problema desapareció

Cuestiones relacionadas