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

从ASP实例化VB6 COM组件的ProgId无效,com,vb6,asp-classic,Com,Vb6,Asp Classic,我们正在使用Server.CreateObject在Windows 2000服务器上从经典ASP实例化VB6 COM组件。我们收到“无效progid”错误消息 DLL已注册。事实上,我们可以运行一个VBS文件,该文件使用WSCRIPT实例化并运行该组件,以显示该组件已注册 为什么ASP无法实例化它?这与权限相关吗?我们尝试过将IUSR和IWAM帐户暂时放在Administrators组中,但似乎没有帮助。我们已授予每个人访问包含DLL的文件夹的权限 我们可以在另一台服务器上注册DLL,并在那里运

我们正在使用Server.CreateObject在Windows 2000服务器上从经典ASP实例化VB6 COM组件。我们收到“无效progid”错误消息

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

为什么ASP无法实例化它?这与权限相关吗?我们尝试过将IUSR和IWAM帐户暂时放在Administrators组中,但似乎没有帮助。我们已授予每个人访问包含DLL的文件夹的权限

我们可以在另一台服务器上注册DLL,并在那里运行相同的ASP页面,这样它就可以工作了

还有一件事:服务器可能在IUSR帐户名与机器名不同的时候被重命名

感谢您的帮助


-Krip

你还没有说OSs涉及到什么,例如那些支持UAC的OSs。你还没有说这个图书馆是如何注册的

很可能您试图自行注册此内容(例如,运行regsvr32.exe),但注册最终在虚拟化位置完成。因此,它将仅被视为由在同一用户上下文下运行的进程注册,并且受虚拟化约束,没有声明它支持Vista的清单

它也可以在用户的HKCU中按用户注册,但如果不采取特殊措施,通常不会发生这种情况


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

启动Procmon并查看应用程序试图访问的注册表项。然后转到那把钥匙,看看它指向哪里


我认为您只是在ASP中拼错了程序ID的名称。

我会回去检查,但我相信是Windows 2000 Server。最初,我们运行了安装该组件的安装包setup.exe。然后,在故障排除期间,我们求助于手动运行regsvr32。我查了一下注册表,我很确定这门课是在HKLM而不是KHCU之下。我不这么认为。它从一个独立的脚本文件.VBS工作,我已经对照注册表检查了很多次。它在新服务器上工作,我误解了这个问题。这是一个许可问题。在IIS中分配给您的应用程序的用户没有对DLL或注册表分支的适当权限。我想可能是注册的许可被搞砸了。