2009-07-27 6 views
8

Je suis en train de modifier un document de mot de VB.NET en utilisant pour la plupart ce code:Récupération de l'usine de classe COM d'erreur composant tout en générant un document Word

Comment automatiser Word à partir de Visual Basic .NET créer un nouveau document http://support.microsoft.com/kb/316383

Cela fonctionne très bien sur ma machine mais lorsque je publie sur le serveur, j'obtiens l'erreur suivante.

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.

L'erreur réelle se produit lorsque je tente de créer simplement un objet d'application de mot

Dim oWord As New Word.Application 

l'aide de Visual Studio 2008 et 3.5 VB.NET. J'ai fait une référence à la "Bibliothèque d'objets Microsoft Word 10.0" et je vois le fichier Interop.Word.dll dans le répertoire bin.

Utilisation de MS Office 2003 sur la machine de développement et Windows Server 2003

encore assez nouveau pour .NET et n'ont pas beaucoup de connaissances sur le serveur de la fenêtre, mais « UnauthorizedAccessException » sonne comme un problème d'autorisation. Je me demande si quelqu'un pourrait me diriger dans la bonne direction sur ce que je pourrais devoir faire pour donner à ma petite application l'accès à utiliser le mot.

Répondre

7

Cela ressemble vraiment à un problème d'autorisations. Courez-vous votre code dans un service Windows? Le service s'exécute normalement en tant que système local, qui peut ne pas avoir l'autorisation d'accéder au modèle d'objet Word. En outre, si le mot est déjà en cours d'exécution en utilisant les informations d'identification d'un autre utilisateur, votre programme peut ne pas pouvoir y accéder via COM en utilisant des informations d'identification différentes. Les applications de bureau ont tendance à être une instance unique qui semble exacerber ce problème.

+0

Assez intéressant quand je me suis connecté au système et couru Word, il a couru l'installateur. Je suppose que personne n'a jamais entendu parler de cet utilisateur. Cela n'a pas résolu mon problème, mais je me demandais même sans le problème d'autorisation si cela l'empêchait de fonctionner. Mon code n'est pas une application Web. Bien que ce soit une petite application rarement utilisée, je n'ai jamais considéré ce qui se passerait si deux personnes essayaient de l'exécuter en même temps. Merci pour cette entrée. Existe-t-il un moyen de voir si un autre utilisateur accède à l'objet COM? Je suis sûr que rien d'autre n'est mais je ne sais même pas où vérifier cela. – TheDPQ

+0

L'application Web s'exécute en tant que utilisateur? Dans IIS 7 par exemple, le pool d'applications s'exécutera en tant que système local, ce qui aura probablement le même problème. –

+0

Encore une fois excusez mon ignorance, mais est-ce que "Network Service" de ce que vous parlez? C'est l'identité que le pool d'applications est configuré pour utiliser. – TheDPQ

0

Il semble que vous ayez un problème d'autorisation dans DCOM. Essayez de modifier les autorisations Word dans DCOM config.

+0

Trouvé quelques personnes référençant http://blog.crowe.co.nz/archive/2006/03/02/589.aspx mais c'est pour exceller. N'a pas aidé, l'erreur est la même mais le numéro d'erreur a changé changé à: 80080005. System.Runtime.InteropServices.COMException au lieu de System.UnauthorizedAccessException – TheDPQ

0

Je ressentais la même question et la zone de problème que j'ai trouvé « configuration de sécurité pour Microsoft Word dans DCOM ». Sur le lien suivant, vous trouverez un guide étape par étape pour savoir comment configurer des composants dans DCOM, répétez ces étapes pour WORD et votre problème sera résolu.

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

Merci, Sushil Jinder

0

Aller à Démarrer -> Exécuter
Type regedit -32 et appuyez sur la touche entrée.
- L'éditeur de registre s'ouvrira.
Aller au Registre HKEY_CLASSES_ROOT \ Word.Application
Sélectionnez Word.Application et définir l'autorisation complète pour les utilisateurs ci-dessous: -
Administrateur, Administrateurs, Service local, système, service, interactif et utilisateurs.

1

Dans mon cas, Word s'exécute via un service Windows sous un compte de service. Le problème était que le dossier Desktop n'existait pas dans C:\Windows\System32\config\systemprofile (ou dans C:\Windows\SysWOW64\config\systemprofile). L'ajout de cela a résolu le problème pour moi.

0

J'ai eu le même problème lors de la génération de document Word. Le problème que j'ai résolu en vérifiant le gestionnaire de tâches, et en terminant le processus en cours WINWORD.EXE, puis exécuté à nouveau mon code. Le problème est parti.

Questions connexes