无效的ProgId从ASP实例化VB6 COM组件

时间:2011-04-28 00:59:48

标签: com vb6 asp-classic

我们使用Server.CreateObject在Windows 2000 Server上使用经典ASP实例化VB6 COM组件。我们收到'无效的progid'错误消息。

DLL已注册。实际上,我们可以运行一个VBS文件,该文件使用WSCRIPT实例化并运行该组件,以便显示它已注册。

为什么ASP无法实例化它?这个权限是否相关?我们已尝试过将IUSR和IWAM帐户放入管理员组(暂时),但似乎没有帮助。我们已授予Everyone访问包含DLL的文件夹的权限。

我们能够在另一台服务器上注册DLL并在那里运行相同的ASP页面,以便它可以工作。

另外一件事:服务器可能已经一次重命名(IUSR帐户名与机器名不同)。

任何帮助表示赞赏!

-Krip

2 个答案:

答案 0 :(得分:0)

您还没有说过涉及哪些操作系统,例如那些支持UAC的操作系统。您还没有说过这个库是如何注册的。

您很可能尝试自行注册此内容(例如运行regsvr32.exe),并且注册最终位于虚拟化位置。因此,它只会被一个在同一用户环境下运行并受虚拟化影响的进程“注册”(没有明确声明可以识别Vista)。

它也可以在用户的​​HKCU中“按用户”注册,但这通常不会在没有采取特殊措施的情况下发生。

即使是PDW软件包也可以解决这个问题,但安装程序MSI会更好。只是复制内容并在其上运行regsvr32.exe是不正确的部署。

答案 1 :(得分:-1)

启动Procmon并查看您的应用尝试访问的注册表项。然后转到那个键,看看它指向的位置。

我想你在ASP中错误拼写了ProgID的名称。