AxAcroPDF - Vista64-Klasse Nicht Registriert-Fehler
Haben wir eine WinForms-Anwendung in C# geschrieben, verwendet die AxAcroPDFLib.AxAcroPDF-Komponente zum laden und drucken einer PDF-Datei. Hat gearbeitet ohne irgendwelche Probleme in Windows XP. Ich zog meine Entwicklungsumgebung auf Vista 64 bit und nun die Anwendung wird nicht ausgeführt (unter Vista 64), es sei denn, ich Entferne die AxAcroPDF Komponente. Ich bekomme den folgenden Fehler, wenn die Anwendung läuft:
"- System.- Laufzeit.InteropServices.COMException:
Klasse nicht registriert (Ausnahme von HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))."
Habe ich hingewiesen wurde auf die Adobe Foren, der Grund für den Fehler ist, dass Sie nicht über ein 64-bit-version des AxAcroPDF ActiveX-Steuerelement.
Gibt es eine Möglichkeit, um dieses problem? Zum Beispiel kann ich konvertieren Sie das 32-bit-ActiveX-Steuerelement, um eine 64-bit-mich kontrollieren?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man nicht konvertieren Adobe-ActiveX-Steuerelement auf 64bit nicht selbst, aber Sie können erzwingen, dass Ihre Anwendung für die Ausführung im 32-bit-Modus aus, indem Sie die Zielplattform auf x86.
Anweisungen für Ihre version von Visual Studio, siehe Abschnitt 1.44 von Probleme Bei Der Verwendung Von Microsoft Visual Studio 2005
Den .Net framework 1.1 ist immer targeting 32-bit-CPUs, während .Net framework 2.0 und höher kannst 32 bit oder 64 bit entsprechend der processorArchitecture Eigenschaft des Programm-manifest geändert durch die "Platform Target" - option der IDE von Visual Studio.
Mit der Standardeinstellung "Any CPU", die IL-code kompiliert wird, je nach Plattform, aber natürlich der COM-Aufruf an die AxAcroPDF 32-bit-Komponente schlägt fehl, wenn die Plattform ist 64 bits.
Nur neu erstellen der EXE-Ziel 32-bit-Plattform nur. Dies funktioniert gut mit der WOW64-emulator unter Vista 64 bit.
Verwenden DLL isolation, arbeitet mit jeder 32-bit COM+ - Anwendung. Sehen Sie mehr an:
http://support.microsoft.com/kb/281335
Mit dieser Lösung können Sie isolieren Ihre 32-bit-COM+ - Anwendung in einem separaten 32-bit-Prozess.
64bit Anwendungen suchen installierten COM+ - Objekte an: HKLM\Software\Classes, aber 32-bit-Anwendungen verwenden, HKLM\Software\WOW6432\Classes