2010-11-18 9 views
11

Meine Firma hat eine VB6-Anwendung mit Crystal Reports 7, die ein Client aufgefordert hat, auf Windows 7 32 Bit installiert werden. Es ist derzeit auf Windows XP 32bit SP2-Maschinen auf dem Client installiert. Die Verbindung zur Datenbank erfolgt über ODBC zur SQL Server 2000-Instanz auf einem anderen Server.Wie behebe ich "Laufzeitfehler '429': ActiveX-Komponente kann Objekt nicht erstellen"?

Unter Windows 7 funktioniert die Installation einwandfrei. Wenn Sie jedoch versuchen, die Anwendung zu öffnen, wird der Fehler angezeigt.

Ich habe am folgenden sah:

  • Registrierung der alle DLL und OCX-Dateien regsvr32 verwenden. Einige werden nicht registriert, da sie entweder bereits registriert sind oder die folgende Meldung angezeigt wird: "Stellen Sie sicher, dass" [Name] .dll "gültige DLL- oder OCX-Datei ist, und versuchen Sie es erneut." Ich lese diesen Forum-Thread dazu: http://social.msdn.microsoft.com/forums/en-US/vblanguage/thread/0653f685-4526-45d9-89f3-8c479a6b4c62
  • Überwachte die Öffnung der Anwendung mit einem ProcessMonitor-Anwendung zu versuchen und zu sehen, ob es eine fehlende DLL oder OCX-Datei gibt - das scheint nicht der Fall zu sein.
  • die Anwendung Bewertet nach this list und nichts scheint gegen diese Richtlinien zu sein

ich zwei Artikel in der Wissensbasis habe bemerkt, dass

  • http://support.microsoft auf diese beziehen .com/kb/281848 - Die mit der Anwendung gebündelte Datei comdlg32.ocx ist die Version 6.0.81.69 und die Datei im Ordner system32 auf der Dev-Maschine (WinXP 32 Bit) ist 6.1.97.82. Aber wenn das das Problem wäre, dann würde es sicher nicht funktionieren.
  • http://support.microsoft.com/kb/184898 - Ich bin nicht sicher, wie um zu bestätigen, dass dies das Problem

Schließlich ist aufgrund Komplexitäten, ich bin nicht um Änderungen vorzunehmen Code erlaubt zu dieser Anwendung. Selbst wenn ich es war, ich bin kein VB6-Programmierer, nur der Typ, der das furchtbare Support-Projekt bekam! Wenn Codeänderungen erforderlich sind, muss ich den WinXP-Modus untersuchen.

Update: Ich bekomme den gleichen Fehler im XP-Modus. Das ist eine Win XP mit SP3 VM. Dies läuft auf einer Win XP SP2-VM, gibt es möglicherweise etwas in SP3, das dies verursacht hätte? Oder ist es nur eine Tatsache, dass es XP-Modus ist?

+0

registriert werden. Haben Sie die Microsoft Scripting Engine installiert? – kyndigs

+0

Ist das nicht für VBScript? Entschuldige meine Unwissenheit, wenn es nicht so ist. – RLT

+0

Überprüfen Sie die Projektreferenzen in Ihrer VB6 IDE und stellen Sie sicher, dass alle dort registrierten DLLs/OCXs registriert sind. – MicSim

Antwort

2

Die Datei msrdo20.dll aus der Anlage fehlt.

Nach the Support Statement for Visual Basic 6.0 on Windows Vista, Windows Server 2008 and Windows 7 sollte diese Datei mit der Anwendung verteilt werden.

Ich bin mir nicht sicher, warum es nicht, aber meine Lösung ist die Datei irgendwo auf der Maschine zu platzieren, und registrieren Sie regsvr32 in der Befehlszeile, zB:

regsvr32 c:\windows\system32\msrdo20.dll 

Im Ideal Welt würden Sie dies mit dem Redistributable verpacken.

0

Sie sagen, dass es funktioniert, sobald Sie die VB6-IDE installieren, so dass das Problem wahrscheinlich ist, dass die Komponenten, die Sie verwenden möchten, von der VB6-Laufzeit abhängen, die installiert wird.

Die VB6-Laufzeitumgebung ist standardmäßig nicht unter Windows installiert.

Installieren der IDE ist eine Möglichkeit, die Laufzeit zu erhalten. Bei Nicht-Entwickler-Computern sollte stattdessen ein "weitervertreibbares" Installationspaket von Microsoft verwendet werden.

Hier ist ein VB6-Laufzeit-Installer von Microsoft. Ich bin mir nicht sicher, ob es die richtige Version für Ihre Komponenten sein:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7b9ba261-7a9c-43e7-9117-f673077ffb3c

+0

Ich habe diese Datei früher zufällig heruntergeladen, leider nach der Installation auf XP SP3 lief die Anwendung immer noch nicht und ich sehe keine andere verteilbare Version, die für XP besser geeignet ist. – RLT

+0

Seitdem habe ich gerade drei DLLs entdeckt, die auf der SP3-Maschine fehlen, die auf der SP2-Maschine vorhanden sind (und diese zur SP3-Maschine hinzufügend und sie registrierend, lässt die Anwendung laufen!). Sie sind msrdo20.dll, msbind.dll und msstdfmt.dll. Ich versuche jetzt herauszufinden, woher sie kommen und ob sie irgendwo anders verteilt sind. – RLT

+1

Verengte es auf msrdo20.dll als das Problem verursacht. – RLT

1

Dieser Download fixiert meine VB6 EXE und Access 2016 (mit ACEDAO.DLL) Laufzeitfehler 429. Hat mich zwei Tage lang, um es, weil es so viele Ursachen von 429.

sind gelöst zu bekommen http://www.microsoft.com/en-ca/download/details.aspx?id=13255

Zitat von Link: „Dieser Download wird eine Reihe von Komponenten installieren, die Übertragung von Daten zwischen 2010-Dateien von Microsoft Office System verwendet werden kann und nicht-Microsoft Office-Anwendungen zu erleichtern“

1

ich den gleichen Fehler hätte aber ich gelöst Verwenden Sie regsvr32.exe in C: \ Windows \ SysWOW64. Weil wir x64-System verwenden. Wenn Ihre Maschine also auch x64 ist, muss die ocx/dll auch bei regsvr32 x64 Version