2009-07-27 6 views
8

Próbuję edytować dokument słowo z VB.NET korzystając w przeważającej części ten kod:Pobieranie fabryki klasy COM dla składnika błędu podczas generowania dokumentu słowo

Jak zautomatyzować Word z Visual Basic .NET Utwórz nowy dokument http://support.microsoft.com/kb/316383

Działa dobrze na moim komputerze, ale po opublikowaniu na serwerze pojawia się następujący błąd.

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.

Rzeczywisty błąd zdarza się, gdy próbuję po prostu utworzyć obiekt aplikacji słowo

Dim oWord As New Word.Application 

użyciu programu Visual Studio 2008 i VB.NET 3.5. Zrobiłem odniesienie do "Biblioteki obiektów Microsoft Word 10.0" i widzę plik Interop.Word.dll w katalogu bin.

Korzystanie z MS Office 2003 na komputerze deweloperskim i Windows Server 2003

nadal dość nowym do .NET i nie mają wiedzy na temat serwera okna, ale „UnauthorizedAccessException” brzmi jak wydania zgody. Zastanawiam się, czy ktoś mógłby wskazać mi właściwy kierunek na to, co muszę zrobić, aby moja mała aplikacja miała dostęp do słowa.

Odpowiedz

7

To z pewnością brzmi jak problem z uprawnieniami. Czy uruchamiasz swój kod w usłudze Windows? Usługa zwykle działa jako system lokalny, który może nie mieć uprawnień dostępu do modelu obiektów programu Word. Dodatkowo, jeśli słowo jest już uruchomione przy użyciu poświadczeń innego użytkownika, program może nie mieć dostępu do niego za pośrednictwem modelu COM przy użyciu różnych poświadczeń. Aplikacje biurowe wydają się być pojedynczą instancją, która wydaje się zaostrzać ten problem.

+0

Co ciekawe, gdy zalogowałem się do systemu i uruchomiłem program Word, uruchomiłem instalator. Wydaje mi się, że nikt nie użył wcześniej tego użytkownika. To nie rozwiązało mojego problemu, ale zastanawiam się nawet bez problemu z uprawnieniami, jeśli to powstrzymałoby go przed działaniem. Nie mój kod jest aplikacją internetową. Chociaż jest to mała rzadko używana aplikacja, nigdy nie zastanawiałem się, co by się stało, gdyby dwie osoby próbowały uruchomić ją w tym samym czasie. Dzięki za to wejście. Czy istnieje sposób sprawdzenia, czy ktoś inny uzyskuje dostęp do obiektu COM? Jestem prawie pewien, że nic innego nie jest, ale nie wiedziałbym nawet, gdzie to sprawdzić. – TheDPQ

+0

Aplikacja internetowa działa jako użytkownik? Na przykład w IIS 7 pula aplikacji będzie działać jako system lokalny, który prawdopodobnie będzie miał ten sam problem. –

+0

Ponownie usprawiedliwić moją ignorancję, ale jest "Network Service", o czym mówisz? Jest to tożsamość, której pula aplikacji jest ustawiona. – TheDPQ

0

Wygląda na to, że możesz mieć problem z uprawnieniami w modelu DCOM. Spróbuj edytować uprawnienia Word w konfiguracji DCOM.

+0

Znaleziono kilka osób, które odwołują się do http://blog.crowe.co.nz/archive/2006/03/02/589.aspx, ale są przeznaczone do programu Excel. Nie pomogło, błąd jest taki sam, ale zmienił się numer błędu na: 80080005. System.Runtime.InteropServices.COMException zamiast System.UnauthorizedAccessException – TheDPQ

0

byłem przeżywa ten sam problem i obszar problemu znalazłem "konfiguracji zabezpieczeń dla programu Microsoft Word w DCOM" . Poniższy link zawiera przewodnik krok po kroku, jak skonfigurować składniki w modelu DCOM, powtórz te kroki dla słowa WORD, a problem zostanie rozwiązany.

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

Dzięki Sushil Jinder

0

idź do Start -> Uruchom
typ regedit -32 i naciśnij klawisz Enter.
- Edytor rejestru zostanie otwarty.
Go rejestru HKEY_CLASSES_ROOT \ Word.Application
Wybierz Word.Application i ustawić pełne uprawnienia do użytkowników poniżej: -
Administrator Administratorzy, Usługi lokalne, System, serwis interaktywny i użytkowników.

1

W moim przypadku program Word działa w ramach usługi systemu Windows na koncie usługi.

Problem polegał na tym, że folder na pulpicie nie istnieje w C:\Windows\System32\config\systemprofile (lub w C:\Windows\SysWOW64\config\systemprofile).

Dodanie go rozwiązało problem.

0

Miałem ten sam problem podczas generowania dokumentu tekstowego. Problem rozwiązałem sprawdzając menedżera zadań i kończąc aktualnie działający proces WINWORD.EXE, a następnie ponownie wykonałem mój kod. Problem zniknął.

Powiązane problemy