2010-11-22 13 views
5

Ich füge einige Funktionen zu einem alten Admin-Tool in VB6 geschrieben. Das Tool verwendet ein C++ ActiveX-Objekt. Ich habe nicht an dem Tool gearbeitet, seit ich auf Windows 7 aufgerüstet habe und jetzt das aktive X-Objekt nicht mit dem Fehler 429 "ActiveX-Komponente kann Objekt erstellen" geladen wird. Ich weiß nichts über VB6, aber ich habe die ActiveX-DLL und Typ-Bibliothek registriert und kann das Objekt aus dem Projekt über das Projekt-> Referenzen-Fenster entfernen und hinzufügen (das Programm kann nicht kompiliert werden, wenn die Referenz wie erwartet entfernt wird). Die VB6 IDE läuft im Administrator-Modus und ich bekomme den gleichen Fehler, wenn ich die exe direkt als Administrator ausführe.Ausführen von ActiveX DLL von VB6 unter Windows 7

Hat jemand anderes ein ähnliches Problem erlebt und einen Weg gefunden, es zu lösen?

Danke, Patrick

PS: Ich habe auch versucht, die DLL in Frage im Arbeitsverzeichnis der exe setzte

EDIT: Ich habe kein Glück habe versucht, dies zu klären und bis zu Ende Remoting in einen Windows 2003-Server, um die Änderungen zu testen.

+0

Versuchen Sie, diese [Wie Beheben von Laufzeitfehler ‚429‘ in DCOM-Anwendungen] (http://support.microsoft.com/kb/177394) – lsalamon

+0

Das ist alles auf der gleichen Maschine, nicht verteilt ... – Patrick

Antwort

-1

Haben Sie UAC auf diesem Computer aktiviert? Haben Sie versucht disabling it? Ich habe einige Fälle gesehen, in denen ActiveX-Steuerelemente registriert wurden, aber Anwendungen, die sie verwendeten, nicht ausgeführt wurden.

+0

Kann das nicht tun, weil es gegen die Firmenpolitik ist ... – Patrick

0

COM wird die Registrierung verwenden, um aus dem Klassennamen die physische DLL-Datei zuzuordnen, die geladen werden muss.

Überprüfen Sie die Registrierungsschlüssel zu Ihrem COM-Objekt ... zuerst unter HKEY_CLASSES_ROOT, dann den Klassennamen, der Sie die CLSID, dann den HKEY_CLASSES_ROOT/CLSID Abschnitt für die GUID des Objekts, und sehen Sie, wo die physikalische Bibliothek lebt.

0

Ein 429 könnte alle möglichen Dinge bedeuten. Oft bedeutet dies, dass eine Abhängigkeit fehlt und der einfachste Weg herauszufinden, welche Abhängigkeit fehlt, ist die Verwendung von procmon, um zu sehen, auf welche Dateien/Registry-Einstellungen die App zugreifen möchte und hoffentlich, wo Sie ACCESS_DENIED oder FILE_NOT_FOUND erhalten was hast du.

2

Sie könnten versuchen, mit Mark Russinovichs regMon und FileMon genau zu sehen, welche Dateien oder Regkeys während des Ladens dieser DLL angefordert werden. Das kann Ihnen oft sagen, ob Sie eine fehlende Abhängigkeit haben.

Auch die DEPENDS.EXE, die mit VS6 kommt, ist manchmal gut dafür (obwohl es nicht unbedingt alle Abhängigkeiten einer DLL oder EXE erhalten).

+0

, dass RegMon/FileMon Referenz den Tag für mich gerettet hat! Diese beiden Apps werden jetzt beide in ProcessMonitor gerollt: [http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx] [] Ich konnte sehen, was die Fehler "Object Library Not Found" verursachte Durchsuchen der Registrierungseinstellungen, die ProcessMonitor mir offenbart hat. Ich konnte eine Protokolldatei in einer CSV-Datei speichern, in Notepad öffnen und suchen. Danke für den Tipp! –

0

Möglicherweise liegt das Problem auch bei Ihrem Browser. Vor ein paar Wochen habe ich meinen IE aktualisiert, seitdem musste ich Änderungen vornehmen, indem ich IE öffne, auf Werkzeuge klicke, auf benutzerdefiniert klicke, zu den activeX-Steuerelementen scrolle und die Eingabeaufforderung aktiviere und/oder klicke. Das gleiche wurde für das Scripting und für mich benötigt, um XMLHttprequest zu verwenden. Jetzt funktioniert alles wieder, aber die ActiveX-Warnmeldung dauert manchmal mehr als zwei Minuten, um Pop-up zu starten.

Verwandte Themen