zh.cls:Public Function MySqlUserid() As String
       MySqlUserid = "myname"
End FunctionPublic Function MySqlPwd() As String
       MySqlPwd = "mypwd"
End FunctionFrmTest.frm:Dim ox As Object
Set ox = CreateObject("SqlIdPwd.Zh", "10.1.254.211")
    TxtUserId = ox.mysqluserid
    TxtPwd = ox.mysqlpwd
Set ox = Nothing运行时提示:实时错误“-2147467238(8000401a):自动化错误”我试过故意用一个其它的字符串替换类名"SqlIdPwd.Zh"会提示未在本机注册类,用别的IP替换 "10.1.254.211"会提示找不到服务器,说明COM+远程访问本身没有问题,那么问题出在哪里呢

解决方案 »

  1.   

    说明一个,服务器用的是WIN2003,客户端WINXP,不知道会不会是这个有影响
      

  2.   

    本机测试可用说明无错误
    你需要的是 COM/COM+远程匿名访问测试成功
    详细步骤!
    1、首先在VB中写一ActiveX(DLL)组件,工程名为COMTEST。编译后在另一程序中调用,确认组件工作正常。
    2、打开“控制面板/管理/组件服务”,在“COM+应用程序”下利用“COM+应用程序安装向导”创建一个空的COM+应用程序,名称为“COMTEST”。
    3、在“COMTEST”下,新建“组件”,在“组件安装向导”中,选择“安装新组件”(注意:不要使用“导入已被注册的组件”),然后将生成的dll及tlb都添加进来(两个文件都要!),完成。
    4、右击“COM+应用程序”上方的“我的电脑”,选择“属性”,然后在“属性”对话框中的“默认属性”页下,将“默认身份验证级”改为“无”,将“默认模拟级别”改为“匿名”,然后在“默认安全设置”页下的默认启动权限里添加"Everyone",确定。(这里是匿名关键之一)
    5、在本地用户管理里启用Guest用户!(这就是有人说权限里设置了Everyone仍然无法访问的原因)
    6、右击“COMTEST”,导出客户端的“应用代理”。注意:在导出对话框中,必须选择“应用程序代理”而不是“服务器应用程序”!并将导出的文件在客户机安装!
    7、好了!现在就可以在客户端进行调用了,点击运行后第一次运行在数秒弹出希望看到的运行结果,在激活服务器的准备状态以后的运行通常都在半秒内响应完成!(注:VB状态下加垃圾机器)后记:本不打算公开方法 ^_^ ,但为感谢龙卷风以前对我问题的热心解答,所以.... 呵呵呵呵..
    另附:有些时候程序不能运行不一定是程序的问题,尤其是与系统和网络相关的东西,多检查一下病毒、网络防火墙和系统权限一般都会有帮助的。 ^_^补充回答:
    服务器可以是win2000的任意版本?
    因为以前访问不到是用户权限问题,因此理论上来说只要支持组件服务的系统都可以。客户端可以是win2000,win98,winxp,win2003
    我的测试服务器端为WIN2000AS,客户端是WIN98。客户端要使用服务器分配的用户名和密码登陆到域?还是只要能连通就能访问?
    客户端可以使用任意用户名和密码,服务器无须配置域!(而且我一直很讨厌域这个东西) 
    只要网络是通的就可以访问!
      

  3.   

    MSDN中关于这个自动化错误的解释:-2147467238 (8000401A)    The server process could not be started because
                              the configured identity is incorrect. Check the
                              username and password.