张
张鸿林
Unregistered / Unconfirmed
GUEST, unregistred user!
许多初学者问这类问题,这里做个总结
=================================
接口不支持错误,是Com Based组件在调试阶段经常发现的错误。在不同的操作系统中,这个错误表达有所不同,Interface not Suported,类没有注册,没有注册类别,指的都是同一种错误。
Com Based组件是一种服务,它一般以.dll或.Ocx形式存在,也可能以.exe形式存在。.dll可以注册成本地服务(只能被本机调用),也可以注册成网络服务(被网络上的所有机器调用)。.ocx为带界面的服务,一般只能注册成本地服务。
使用regsvr32 或tregsvr32 注册本地服务,使用Com+环境安装网络服务。
.tlb(类型库)为.dll的接口声明文件,在异机调用Com+服务时,需要在调用方注册Com+服务的.tlb文件。
.tlb只能通过tregsvr注册。
一般情况,调用服务的接口,相当于调用一个过程,如果这个过程不存在,则出现这个错误。
服务本身没有注册,服务类型库(.tlb)没有在客户注册,或,客户没有访问服务的权限,都可能出现这个错误。
出现这个错误时,首先,重新注册dll(或重新安装Com+),看看注册时是否提示失败,如果失败,一般是依赖的资源没有拷贝到system32目录造成。
第二,在本机调用,一般应该成功。
第三,在异机注册.tlb。如果还是提示这个错误,一般可以肯定是无权访问的问题,进入下一步:
第四,以服务器存在的用户名密码登录客户机器,如果访问成功,检查Com+环境,安全设置/调用的身份证级"从"包"改成"无",启用Guest用户,并修改服务器的默认用户名。这时,客户以任意用户(只要服务器不存在这个用户)登录,应该可以访问。
=================================
接口不支持错误,是Com Based组件在调试阶段经常发现的错误。在不同的操作系统中,这个错误表达有所不同,Interface not Suported,类没有注册,没有注册类别,指的都是同一种错误。
Com Based组件是一种服务,它一般以.dll或.Ocx形式存在,也可能以.exe形式存在。.dll可以注册成本地服务(只能被本机调用),也可以注册成网络服务(被网络上的所有机器调用)。.ocx为带界面的服务,一般只能注册成本地服务。
使用regsvr32 或tregsvr32 注册本地服务,使用Com+环境安装网络服务。
.tlb(类型库)为.dll的接口声明文件,在异机调用Com+服务时,需要在调用方注册Com+服务的.tlb文件。
.tlb只能通过tregsvr注册。
一般情况,调用服务的接口,相当于调用一个过程,如果这个过程不存在,则出现这个错误。
服务本身没有注册,服务类型库(.tlb)没有在客户注册,或,客户没有访问服务的权限,都可能出现这个错误。
出现这个错误时,首先,重新注册dll(或重新安装Com+),看看注册时是否提示失败,如果失败,一般是依赖的资源没有拷贝到system32目录造成。
第二,在本机调用,一般应该成功。
第三,在异机注册.tlb。如果还是提示这个错误,一般可以肯定是无权访问的问题,进入下一步:
第四,以服务器存在的用户名密码登录客户机器,如果访问成功,检查Com+环境,安全设置/调用的身份证级"从"包"改成"无",启用Guest用户,并修改服务器的默认用户名。这时,客户以任意用户(只要服务器不存在这个用户)登录,应该可以访问。