2016-11-02 27 views
1

我在Windows 10 64位系统上注册了一个使用RegSvr32的DLL。DLL已注册但无法正常工作

我收到了RegSvr32后以下消息:

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

当我试图运行基本VBS文件执行以下操作:

Set obj = CreateObject("myspecial.clsmycode")

我收到以下消息尝试后运行该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 
    ---------------------------

有没有人知道我做错了什么,或者我需要做些什么才能使其工作?

+1

[已经回答这个](http://stackoverflow.com/a/35985827/692942)在很多细节之前。虽然问题在于经典ASP,但注册任何COM dll时仍然如此。 – Lankymart

+1

最明显的原因是您运行64位版本的脚本解释器,但COM服务器是32位DLL。或者相反。请始终使用供应商提供的安装程序btw,如果您没有正确的安装说明,请使用电话。 –

+0

@HansPassant并不总是有一个*“供应商”*,COM DLL已经不复存在,或者在某些情况下不会存在于内部...您可以通过遵循我提供的清单上面的答案*(请参阅“如何在Windows上注册COM DLL”和“COM DLL核对表”部分)*。了解Windows操作系统中32位/ 64位之间的体系结构差异,这一切都是不言而喻的。 – Lankymart

回答

1

解决办法:

我的32位的DLL确实注册我的64位Windows 10系统上,不过,我试图在运行64位模式的脚本。另外,因为我试图在ASP中使用这个DLL,所以它不起作用,因为没有启用32位应用程序。

的问题做解决了以下内容:

1)启用IIS设置中的应用程序池内的32位应用程序。

2)运行该脚本在32位模式下使用这种方法:

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

+0

所以你错过了我所说的部分*“在64位操作系统上,系统程序位于”*?如果你知道要从'%systemroot%\ SysWOW64'运行'cscript.exe'以在32位子系统中运行它。至少你找到了我想的解决方案。您也不会提及任何Web应用程序,那么为什么您需要更改任何IIS应用程序池设置?例如,纯粹涉及使用像Classic ASP这样的COM的Web应用程序。 – Lankymart

+0

好的,在解释该问题的答案中发现了ASP评论。 – Lankymart