Le composant ActiveX ne peut pas créer d'objet

je viens d'installer une application tierce sur mon Serveur Windows server 2008 et j'ai l'

Composant ActiveX ne peut pas créer d'objet

message quand j'essaie d'accéder en utilisant un CreateObject en VBScript.

il est définitivement installé et existe sous "Programmes et fonctionnalités". Quelqu'un aurait-il une liste de choses que je peux vérifier pour comprendre ce qui se passe?

j'ai maintenant essayé d'enregistrer la DLL en utilisant regsvr32.exe /i bob.dll comme suggéré mais je reçois cette erreur:

Le Module " Bob.dll " a été chargé, mais le point D'entrée DllRegisterServer a été pas trouvé.

assurez-vous que " Bob.dll" est un fichier DLL ou OCX valide et puis essayer de nouveau.

je note que c'est une application 32 bits sur une machine 64 bits à de ce point. Il fonctionne également très bien sur ma machine qui est Windows XP 32-bit.

32
demandé sur bluish 2009-03-18 07:09:43

11 réponses

il s'avère que pour faire fonctionner cette application sous VBScript, j'ai dû faire deux choses.

  1. Run RegAsm.exe pour enregistrer la Dll.
  2. lancer le C:\Windows\SysWOW64\cscript.exe pour lancer mon VBScript.

Merci pour votre aide.

si cela ne fonctionne pas, vérifier les autres réponse ici à propos de l'activation des applications 32 bits.

43
répondu GordyII 2017-05-23 12:26:24

il est également intéressant de vérifier que vous avez "Enable 32-bit Applications" défini à True dans les paramètres avancés de la DefaultAppPool dans IIS.

37
répondu Keith Trangmar 2011-09-08 08:06:34

l'application essaye de créer un objet COM et même si cette DLL COM existe, elle peut dépendre d'une autre DLL qui n'est pas installée. Vous pouvez utiliser DependencyWalker pour savoir si c'est le cas.

10
répondu MrTelly 2009-03-18 04:29:58

je sais qu'il s'agit d'une vieille question et que la réponse est déjà correcte, mais cela ne m'a pas aidé.

Pour tous les pauvres âmes qui arrivent de cette façon à l'avenir, vérifiez les paramètres de votre navigateur-

pour moi, en utilisant IE, le correctif était d'aller dans Outils/Options Internet, onglet de sécurité, pour la zone pertinente, "niveau personnalisé" et de vérifier les paramètres ActiveX. Paramètre d'initialisation et de script ActiveX non marqués comme sécurisés pour l'écriture de scripts" à "Activer" résolu ce problème pour moi

5
répondu DannykPowell 2010-08-25 06:27:27

lorsque vous enregistrez le composant, assurez-vous d'utiliser la version 32 bits de regsvr32.EXE. Si vous exécutez simplement regsvr32.exe dans un prompt élevé, il prendra par défaut la version standard 64 bits (qui curieusement est situé dans C:\Windows\System32)--1-->

la version dont je crois que vous avez besoin se trouve dans C:\Windows\SysWow64\regsvr32.exe

5
répondu Verakso 2011-06-01 14:10:56

Il semble vraiment que si l'objet auquel vous faites référence n'est pas enregistré sur le système. Je sais que vous avez dit qu'il est installé, mais ça ne veut pas nécessairement dire qu'il est enregistré. Pour confirmer cela, recherchez le progID que vous avez utilisé dans votre registre.

exemple pour ce code:

set objFSO = CreateObject("Scripting.FileSystemObject") 

je recherche Scripting.FileSystemObject dans le registre. Ensuite, je regarderais la clé de Registre au-dessus de la valeur trouvée, pour InProcServer32 valeur. Cela vous donnera le chemin vers le fichier ActiveX elle a été enregistrée à partir de (par Scripting.FileSystemObject le fichier est "c:\windows\system32\scrrun.DLL.)"

Si vous ne trouvez pas votre progID dans le registre, alors il n'est pas enregistré sur votre système, qui est votre problème. Si elle n'est pas enregistrée, vous devez savoir quel fichier l'enregistre, qui est généralement un .ocx ou une .dll dans le même chemin de dossier de votre application tierce, puis enregistrez ces fichiers. Voici la commande pour enregistrer un fichier:

regsvr32 /i "c:\windows\system32\scrrun.dll"

même si vous trouvez le prog valeur dans le registre et il renvoie à un fichier qui est présent sur votre système, vous pouvez toujours vouloir essayer de réenregistrer le fichier. J'ai découvert que parfois l'enregistrement a été cassé quelque part et il était plus facile de réenregistrer les fichiers que c'était pour régler le problème.

2
répondu mrTomahawk 2012-10-19 13:13:13

si c'est un COM/Active X 32 bits, utilisez la version 32 bit de cscript.exe / wscript.exe situé à C:\Windows\SysWOW64\

1
répondu Jean-Philippe Ménard 2015-02-26 19:10:15

je rencontre aussi la même erreur dans vbscript.

Set objFSO = CreateObject("Scripting.FileSystemObject")

Solution:

Ouvrez la ligne de commande, exécutez la commande :

regsvr32 /i "c:\windows\system32\scrrun.dll"

et ça fonctionne

0
répondu Le Truong Uy Phu 2012-10-11 17:16:30

j'ai eu le même problème dans un programme VB6 que j'écris, où un formulaire utilise un objet ScriptControl pour exécuter des indices VBScripts sélectionnés par l'utilisateur.

cela a bien fonctionné jusqu'à l'autre jour, quand il a soudainement commencé à afficher 'Runtime error 429' quand le VBScript a essayé de créer un script.FileSystemObject.

après une journée entière de folie, en essayant toutes les solutions proposées ici, j'ai commencé à soupçonner que le problème était dans mon application.

Heureusement, Je il y avait une version de sauvegarde de ce formulaire: j'ai comparé leurs codes, et j'ai découvert que par inadvertance j'avais placé la propriété UseSafeSubset de mon objet ScriptControl à True.

C'était la seule différence dans la forme, et après avoir restauré la copie de sauvegarde ça a fonctionné comme un charme.

j'Espère que cela peut être utile à quelqu'un. En place avec VB6! : -)

Max-Italy

0
répondu Max1234-ITA 2015-02-06 08:43:36

J'ai eu le même problème avec Excel, j'essayais d'utiliser une DLL COM 32 avec une version Excel 64 bits et j'ai eu cette erreur. Je reconstruis le COM dll à une version 64 bits et l'erreur disparaît. Alors assurez-vous que votre COM dll a la même architecture (x86 vs x64) que votre application.

0
répondu Malick 2016-04-06 12:54:21

j'ai eu ce problème aussi. J'essayais d'exécuter une vieille dll 32 bits dans un système 64 bits. J'ai eu de travail en copiant le .dll à la C:\Windows\SysWoW64 \ directory et lancer ceci:

%systemroot%\SysWoW64\regsvr32 "C:\Windows\SysWoW64\thenameofyourdll.dll"

Et permettant à IIS d'exécuter des applications 32 bits

0
répondu Chris Broski 2018-09-25 14:20:59