2016-11-02 4 views
1

Ich bin auf einem Windows 10 64-Bit-System und ich registrierte eine DLL mit RegSvr32.DLL registriert, aber nicht funktioniert

erhielt ich die folgende Meldung nach dem RegSvr32:

 --------------------------- 
    RegSvr32 
    --------------------------- 
    DllRegisterServer in myspecial.dll succeeded. 
    --------------------------- 
    OK 
    ---------------------------

Als ich versuchte, eine grundlegende VBS-Datei auszuführen, die die folgenden:

Set obj = CreateObject("myspecial.clsmycode")

ich die folgende Meldung erhalten, nachdem er versucht Um diesen VBS-Code auszuführen:

 --------------------------- 
    Windows Script Host 
    --------------------------- 
    Script: C:\test.vbs 
    Line: 3 
    Char: 9 
    Error: ActiveX component can't create object: 'myspecial.clsmycode' 
    Code: 800A01AD 
    Source:  Microsoft VBScript runtime error 

    --------------------------- 
    OK 
    ---------------------------

Weiß jemand, was ich falsch mache oder was ich tun muss, damit das funktioniert?

+1

[Bereits in dieser beantwortet] (http://stackoverflow.com/a/35985827/692942) in vielen Details vor . Obwohl diese Frage für Classic ASP gilt, gilt dies auch für die Registrierung von COM-DLLs. – Lankymart

+1

Der offensichtlichste Grund ist, dass Sie die 64-Bit-Version des Skript-Interpreters ausführen, der COM-Server jedoch eine 32-Bit-DLL ist. Oder umgekehrt. Verwenden Sie immer das Installationsprogramm, das vom Hersteller bereitgestellt wird. Verwenden Sie ein Telefon, wenn Sie nicht über die richtigen Installationsanweisungen verfügen. –

+0

@HansPassant Es gibt nicht immer einen * "Vendor" *, die COM-DLL ist so alt, dass sie nicht mehr existiert oder in einigen Fällen im eigenen Haus geschrieben wurde ... Sie können das Problem einfach durch Befolgen der Checkliste lösen die obige Antwort * (siehe Abschnitte "COM DLL mit Windows registrieren" und "COM DLL Checklist") *. Es liegt alles daran, die Architektur Unterschiede zwischen 32/64 Bit in Windows OS zu verstehen. – Lankymart

Antwort

1

Die Lösung:

Meine 32-Bit-DLL in der Tat auf meinem 64-Bit-Windows-10-System registriert wurde, aber ich habe versucht, das Skript in 64-Bit-Modus ausgeführt werden. Da ich versuchte, diese DLL in ASP auf IIS zu verwenden, funktionierte es nicht, da 32-Bit-Anwendungen nicht aktiviert waren. innerhalb des Anwendungspools innerhalb der IIS-Einstellungen

1) Aktiviert Anwendungen 32-Bit:

Das Problem wurde durch Sie folgendermaßen vorgehen gelöst.

2) Ran das Skript in 32-Bit-Modus mit dieser Methode:

A: How do I run a VBScript in 32-bit mode on a 64-bit machine?

+0

Sie haben also den Abschnitt verpasst, in dem ich angegeben habe * "Auf einem 64-Bit-Betriebssystem befinden sich die Systemprogramme in" *? Wenn Sie das lesen würden, würden Sie 'cscript.exe' von'% systemroot% \ SysWOW64' ausführen, um es im 32-Bit-Subsystem auszuführen. Zumindest hast du eine Lösung gefunden, denke ich. Sie verweisen auch nicht auf eine Webanwendung, warum mussten Sie dann Einstellungen für den IIS-App-Pool ändern? Das betrifft rein Web-Anwendungen mit COM wie Classic ASP zum Beispiel. – Lankymart

+0

Ok, entdeckte den ASP-Kommentar in der Antwort, der das erklärt. – Lankymart

Verwandte Themen