DCOM Fehler der Office-Automatisierung
Entwickelte ich ein C# - Programm, das zieht Daten aus einer SQL Server-Datenbank, und dann erzeugt Word-Dokumente, die die Daten enthalten, die. Ich habe eingestellt, dass das Programm bis zur Ausführung als Teil eines SSIS-Jobs auf einem Windows Server 2003-box. Das Programm läuft als Benutzer SQLSVC, die nicht über Administratorrechte verfügen. Wenn ich mich einlogge als SQLSVC und führen Sie das Programm ordnungsgemäß ausgeführt wird. Allerdings, wenn das Programm ausgeführt wird, automatisch als ein SSIS-job, es gefriert bei der folgenden Codezeile
Microsoft.Office.Interop.Word.Application word =
new Microsoft.Office.Interop.Word.Application();
Wenn ich den Prozess gewaltsam, wird die folgende Fehlermeldung generiert wird.
Error Message: System.Runtime.InteropServices.COMException (0x80080005):
Retrieving the COM class factory for component
with CLSID {000209FF-0000-0000-C000-000000000046}
failed due to the following error: 80080005.
at IepGlance.Program.CreateNewIepFiles(Dictionary`2
iepDictionary, EasyIepDataContext dbContext)
at IepGlance.Program.Main(String[] args)
Soweit ich herausfinden können, das problem mit DCOM-Berechtigungen. Ich habe Sie dcomcnfg ein, um alle möglichen DCOM-Berechtigungen für Benutzer SQLSVC, aber das hat nicht geholfen. Gibt es andere mögliche Lösungen?
InformationsquelleAutor Eric Ness | 2009-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Programm ausführen "dcomcnfg -32". ( Sie nicht finden können, die word-und excel-Komponenten, wenn es läuft unter 64bit)
Gehen Sie auf "Konsolenstamm/Komponentendienste/Computer/Arbeitsplatz/DCOM-Config/" finden Sie unter Microsoft Word und Excel, und wählen Sie Eigenschaften.
Gehen Sie auf Sicherheit und wählen Sie "Anpassen" unter "Konfiguration-Berechtigungen. (Wenn nötig können Sie die anderen Berechtigungen als gut, aber ich brauchte nicht zu) Fügen "IIS_IUSRS" und geben Sie "Vollzugriff".
Gehen Sie nun auf "Identität" und wählen Sie "interaktiver Benutzer".
Nichts bei all unter "Microsoft", wenn Sie entweder
dcomcnfg -32
,dcomcnfg -64
,mmc comexp.msc /32
odermmc comexp.msc /64
betraf, zu Wort, für mich. Meine Zeit verschwendet. Office 2016 Für Windows 10 Pro.Ich war in der Lage zu finden
Microsoft Word 97-2003 Document
unter der DCOM-Konfiguration, wenn ich nur geöffnetmmc
odermmc -32
.InformationsquelleAutor Juny Eldo
Paar Sachen hier.
Erste, das thread auf, SO kann helfen.
Zweite, Microsoft warnt, dass 'Komplikationen' auftreten, wenn Sie Office automatisieren, durch eine unbeaufsichtigte Prozess. Hier ist die Pointe (Fett im original):
Verlinkten Artikel beschreibt Problemumgehungen.
InformationsquelleAutor Jay Riggs
Es hängt davon ab, ob Sie auf einem 64-bit-Maschine, und wenn Sie 32-bit-Office-oder 64-bit-office, aber in jedem Szenario müssen Sie gehen in den Admin-Tools > Komponentendienste, und unter DCOM-Konfiguration, die Sie brauchen zu finden "Microsoft Word 97 - 2003-Dokument", und legen Sie dann die 'Identität' der Benutzer, der ausgeführt wird, Ihre app-pool. oder einfach deaktivieren Sie die Sicherheit.
Wenn Sie eine 64-bit-server mit 32-bit-Version von Office, können Sie Schwierigkeiten haben werden, diese DCOM-Einstellung. Sie benötigen, um ausführen "MMC -32" von der Eingabeaufforderung aus zu starten, 32-bit-MMC und dann "Component Services" aus dem Menü "Datei > Hinzufügen /Entfernen von Snap-ins" - Menü.
Hoffe, dass dies geholfen
Wie stellen Sie "deaktivieren der Sicherheit auf ihn"? Ich versuchte es mit der Identität von einem Dienst, den ich mit war, war zu versuchen, etwas ähnliches zu tun um die OP, und es hat nicht funktioniert.
Sie müssen bei der Identifizierung der richtigen ClassID oder GUID, die entspricht dem Typ, der das Problem verursacht. Sobald Sie wissen, welche Klasse ist blockiert durch DCOM-Sicherheit Sie können dann öffnen Sie die Management console und stellen Sie die Sicherheit auf die Komponente. Zum Öffnen der Management-Konsole müssen Sie ausführen den Befehl "MMC" -- es wird ein anderes argument "-32" wenn Ihr COM-Komponente 32-bit-auf eine 64-bit-Maschine. Sobald Sie die Konsole öffnen, finden Sie die Klasse durch die Klassen-ID und passen Sie die Eigenschaften.
InformationsquelleAutor Glenn Ferrie
Einen Punkt von meiner Seite,
Ich war die Einplanung der batch-job " in einem unserer server und warf den gleichen Fehler in der Erwägung, dass es ausgeführt wurde, in mein lokal.
Ich habe versucht, alle der oben genannten Schritte, aber in meinem Fall tatsächliche Szenario war anders.
Wann planen Sie den batchjob, wählen Sie nicht die option [Ausführen, ob der Benutzer angemeldet ist oder nicht] weil dies erfordert, dass der admin-Zugang, und wenn Sie nicht sind, Sie sind im problem.
InformationsquelleAutor Anish