2011-01-12 4 views
1

Wir haben eine OCX-Datei mit 2 ActiveX-Steuerelementen. Eins führte zum anderen und ... jetzt sind wir in "dll hell". Ein Steuerelement wird in der enthaltenden Anwendung ordnungsgemäß geladen, und das andere Steuerelement (das geänderte Steuerelement) wird nicht vollständig geladen. Ohne Zweifel ist es, weil wir broke compatibility durch Ändern mehrerer Ereignis- und Methodensignaturen. (Der sollten uns lehren, alten .ocx der Registrierung zu entfernen, bevor neue Registrierung ...)Was ist der richtige Weg, um eine kaputte COM-Registrierung zu beheben?

In der Vergangenheit hat mich mit erinnere in die Registry gehen und manuell wichtig aussehende Einträge aus HKCR\TypeLib entfernen, aber das ist scary stuff. Was ist die allgemein akzeptierte Lösung dafür?

+0

Haben Sie einen Registry Cleaner versucht (ein Werkzeug, wie CCleaner)? Manchmal sind diese Tools in der Lage, diese ActiveX-Probleme zu beheben. –

+0

Ja, das haben wir ausprobiert –

Antwort

1

Wenn Ihre COM-Registrierung wirklich defekt ist, die einzige Möglichkeit, die ich beheben kann, ist eine Suche über die Registrierung für die betreffenden CLSIDs und löschen alle Referenzen darauf.

Ja, es ist ein wenig gefährlich; das ist, warum Steuer ein ActiveX- soll sicher sich registrieren, und warum jetzt MS empfiehlt ein MSI für Installationen verwenden und keine SelfReg (regsvr32) im Installationsprozess zu tun. Sobald etwas auf einem System durcheinander gebracht wird, kann es ein Problem sein, es zu beheben.

Wenn Sie jedoch die entsprechende CLSIDs (die CLSID für jede Kontrolle und die typelib) herauszufinden und nur Dinge entfernen, die diesen Bezug sollten Sie in Ordnung sein; Um sicher zu sein, legen Sie vor dem Start einen Systemwiederherstellungspunkt fest.

Viel Glück