2008-09-15 9 views
8

Wir haben eine in C# geschriebene WinForms-Anwendung, die die AxAcroPDFLib.AxAcroPDF-Komponente zum Laden und Drucken einer PDF-Datei verwendet. Hat in Windows XP problemlos funktioniert. Ich habe meine Entwicklungsumgebung auf Vista 64 Bit umgestellt und jetzt wird die Anwendung nicht ausgeführt (auf Vista 64), wenn ich die AxAcroPDF-Komponente nicht entferne. Ich erhalte die folgende Fehlermeldung, wenn die Anwendung ausgeführt wird:AxAcroPDF - Vista64 Klasse Nicht registrierter Fehler

"System.Runtime.InteropServices.COMException: Klasse nicht registriert (Ausnahme von HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))."

Ich wurde in den Foren von Adobe darauf hingewiesen, dass der Grund für den Fehler darin liegt, dass sie keine 64-Bit-Version des AxAcroPDF ActiveX-Steuerelements haben.

Gibt es ein Problem mit diesem Problem? Kann ich beispielsweise die 32-Bit-ActiveX-Steuerung selbst in eine 64-Bit-Steuerung umwandeln?

Antwort

14

Sie können das ActiveX-Steuerelement von Adobe nicht selbst in 64-Bit konvertieren, aber Sie können Ihre Anwendung zwingen, im 32-Bit-Modus zu arbeiten, indem Sie das Plattformziel auf x86 setzen.

Anweisungen für Ihre Version von Visual Studio, Abschnitt 1.44 von Issues When Using Microsoft Visual Studio 2005

+0

Antwort von seaman.myopenid.com unten ist das gleiche, bietet aber ein bisschen mehr Details – daveywc

0

Verwenden DLL Isolation, funktioniert mit jedem 32-Bit-COM + -Anwendung sehen. Weitere Informationen finden Sie unter: http://support.microsoft.com/kb/281335

Mit dieser Lösung können Sie Ihre 32-Bit-COM + -Anwendung in einem separaten 32-Bit-Prozess isolieren.

64-Bit-Anwendungen Suche COM + Objekte installiert: HKLM \ Software \ Classes, aber 32-Bit-Anwendungen verwenden HKLM \ Software \ WOW6432 \ Classes

+0

Funktioniert DLL-Isolation mit ActiveX-Steuerelementen? Ich hatte den Eindruck, dass Sie nur nicht-visuelle Komponenten isoliert erstellen könnten. Wenn dies möglich ist, kann dies eine bessere Lösung sein, abhängig von der Anzahl und der Art der Aufrufe der Kontrolle im Vergleich zur Deployment Hastle/32bit Verlangsamung – rpetrich

6

.NET Framework 1.1 immer 32 Bit CPUs, während .NET Framework 2.0 abzielt und Obiges kann nach der Eigenschaft processorArchitecture des Programmmanifests, das durch die Option "Platform Target" der Visual Studio IDE geändert wurde, 32 Bit oder 64 Bit adressieren. Mit der Standardoption 'Any CPU' wird der IL-Code gemäß der Plattform kompiliert, aber der COM-Aufruf an die AxAcroPDF 32-Bit-Komponente schlägt natürlich fehl, wenn die Plattform 64 Bit hat. Erstellen Sie die EXE nur neu, um nur auf die 32-Bit-Plattform zuzugreifen. Dies funktioniert gut mit dem WOW64-Emulator in Vista 64 Bit.