2016-11-02 4 views
1

Je suis sur un système Windows 10 64 bits et j'ai enregistré un DLL en utilisant RegSvr32.DLL enregistrée mais ne fonctionne pas

J'ai reçu le message suivant après la RegSvr32:

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

Quand j'ai essayé d'exécuter un fichier VBS de base qui effectue les opérations suivantes:

Set obj = CreateObject("myspecial.clsmycode")

Je reçois le message suivant après avoir essayé pour exécuter ce code VBS:

 --------------------------- 
    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 
    ---------------------------

Est-ce que quelqu'un sait ce que je fais de mal ou ce que je dois faire pour que cela fonctionne?

+1

[déjà répondu] (http://stackoverflow.com/a/35985827/692942) dans beaucoup de détails avant . Bien que la question soit pour ASP classique, la même chose s'applique toujours lors de l'enregistrement des DLL COM. – Lankymart

+1

La cause la plus évidente est que vous exécutez la version 64 bits de l'interpréteur de script, mais le serveur COM est une DLL 32 bits. Ou l'inverse. Utilisez toujours l'installateur fourni par le vendeur, utilisez un téléphone si vous n'avez pas les instructions d'installation appropriées. –

+0

@HansPassant Il n'y a pas toujours un * "vendeur" *, le dll COM est si vieux qu'ils n'existent plus ou dans certains cas écrits en interne ... Vous pouvez tout simplement contourner le problème en suivant la liste de contrôle que j'ai fournie la réponse ci-dessus * (voir "Comment enregistrer COM DLL avec Windows" et "COM DLL Checklist" sections) *. Il s'agit de comprendre les différences d'architecture entre les bits 32/64 sous Windows OS. – Lankymart

Répondre

1

La solution:

Ma DLL 32 bits a été bien enregistré sur mon système de Windows 10 64 bits, cependant, je tente de lancer le script en mode 64 bits. En outre, comme j'essayais d'utiliser cette DLL dans ASP sur IIS, cela ne fonctionnait pas car les applications 32 bits n'étaient pas activées.

Le problème a été résolu en procédant comme suit:

1) Activé applications 32 bits dans le pool d'applications dans les paramètres IIS.

2) l'exécution du script en mode 32 bits en utilisant cette méthode:

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

+0

Vous avez donc manqué la section si je vous l'ai indiqué * "Sur un système d'exploitation 64 bits, les programmes système se trouvent dans" *? Si vous aviez lu que vous saviez exécuter 'cscript.exe' à partir de'% systemroot% \ SysWOW64' pour l'exécuter dans le sous-système 32 bits. Au moins, vous avez trouvé une solution, je suppose. Vous ne faites également aucune référence à une application Web, alors pourquoi avez-vous besoin de modifier les paramètres du pool d'applications IIS? Cela concerne uniquement les applications Web utilisant COM comme ASP classique par exemple. – Lankymart

+0

Ok, repéré le commentaire ASP dans la réponse qui explique cela. – Lankymart