Auf anderem PC "Class not registered"

  • VB

  • Taxel
  • 1874 Aufrufe 1 Antwort

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Auf anderem PC "Class not registered"

    Hi Leute,
    ich habe einen Modern Warfare 2 LAN Loader in Visual Basic 6.0 geschrieben.
    Wenn ich ihn allerdings auf einem anderen PC ausführe, kommt da die Meldung
    "Class not registered
    you need following file to be installed on your machine.
    MSSTDFMT.DLL"

    Ich habe herausgefunden, dass man diesen Fehler beheben kann, indem man die Dateien in ne Setup.exe packt.
    Allerdings will ich, dass man nur die exe-Datei ausführen muss, ohne sie erst noch installieren zu müssen.
    Kann man vielleicht auch nur die .dll s dazupacken, und machen, dass das Programm sie in dem Ordner, in dem es selbst ist, sucht?

    mfg
    Taxel
    Cuiusvis hominis est errare, nullius nisi insipientis in errore perseverare.
    Irren ist menschlich, doch im Irrtum zu verharren ist ein Zeichen von Dummheit.

    -Cicero
  • Das Problem liegt nicht nur im kopieren.
    Als DLL will die Datei auch registriert werden.
    Von Hand macht man das mit "regsvr32 irgendeine.dll".
    (Nicht jede DLL muss registriert werden, die von Dir angefrage aber schon)



    Es geht auch mit VB6 Code:

    Quellcode

    1. ' Jede ActiveX-Dll bringt die Routinen zum Registrieren mit
    2. ' So bindet man die in VB6 ein
    3. ' Funktion um ActiveX zu registrieren
    4. Private Declare Function RegMSSTDFMT Lib "MSSTDFMT.DLL" Alias _
    5. "DllRegisterServer" () As Long
    6. ' Funktion um ActiveX zu deregistrieren
    7. Private Declare Function UnRegMSSTDFMT Lib "MSSTDFMT.DLL" Alias _
    8. "DllUnregisterServer" () As Long
    9. Const ERROR_SUCCESS = &H0
    10. Private Declare Function RegisterDLL Lib "MSSTDFMT.DLL" Alias _
    11. "DllRegisterServer" () As Long
    12. Dim retCode As Long
    13. On Error Resume Next
    14. ' Zum Regisrieren muss man im Pfad sein
    15. ' oder die Datei liegt im Systemordner
    16. ChDrive "C:"
    17. ChDir "C:\MyApp"
    18. ' DLL registrieren
    19. retCode = RegisterDLL()
    20. If Err <> 0 Then
    21. ' probably the DLL isn't there
    22. MsgBox "Unable to find the Dll file"
    23. ElseIf retCode <> ERROR_SUCCESS Then
    24. ' the registration run and failed
    25. MsgBox "Registration failed"
    26. End If
    Alles anzeigen


    Eins noch zur Warnung:
    Wenn die Datei aus irgend einem Verzeichnis registriert wird und jemand löscht das Verzeichnis,
    dann ist die registrierte Datei weg. Ist das eine Systemdatei, dann freut sich der User ...
    Auch wenn der Nutzer eine andere Version hat, kann das zu großem Spass führen.
    Nennt man auch "Hell of DLL". Hier der Link zur Wikipedia: de.wikipedia.org/wiki/DLL-Konflikt

    Ist also mit Vorsicht zu geniessen.

    Eine gute Idee ist es, vorher zu prüfen, ob die DLL schon registriert ist:
    activevb.de/tipps/vb6tipps/tipp0637.html
    Hier findet man auch noch eine Version um DLL zu registrieren (mit shell-Kommando und regsvr32).

    Ach ja, es ist ja Dein Programm was nicht startet. Dann musst Du einen Loader-Loader bauen ...
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von wasawasa ()