我用VB做了个dll,然后做为COM+组件运行(系统是2003)。然后导出为应用程序代理,安装在其他计算机(系统是xp)上,但程序运行是出现“远程调用出现70错误,拒绝的权限”,我该怎么处理呢?是不是我设置的错误?

解决方案 »

  1.   

    我没有COM+,不过这类问题可以从几方面入手:
    一、在服务器的用户组中,看看是否有与 COM+ 相关的组,将客户端登陆的网络用户添加到该组中。
    二、检查 COM+ 组件权限属性,是否有远程调用相关的选项。
    三、确认 COM+ 服务已启动。
    四、客户端指向的服务器是否正确。
      

  2.   

    偶前年回复过的帖子:
    http://topic.csdn.net/t/20060303/13/4590518.html
      

  3.   

    再看看这个:http://topic.csdn.net/t/20060111/10/4509994.html
      

  4.   

    谢谢各位的帮助!
    to Tiger_Zhao:
    现在我在服务器的用户组中,将用户“Everyone”添加到“Distributed COM Users”组中,该组的成员允许启动、激活和使用此计算机上的分布式 COM 对象。
    客户端运行时错误由“远程调用出现70错误,拒绝的权限”变成了“运行时错误 '-2147467225 (800040277)' Automation 错误”,不知道是不是配置COM+组件的问题,还是我的dll问题?
      

  5.   

    可以单独做个测试用对象,在对象方法中直接返回一个常量。重新做次发布安装到客户端。试试这个对象调用是否成功。
    还有检查COM+对象引用的组件(ADO、XMLDOM)等是否在客户端安装。
    还有作为参数传递的数据类本身是不应该设计为COM+对象,应该象ADO一样在服务端/客户端分别作为标准COM组件安装。
      

  6.   

    做了个简单测试对象
    创建个ActiveX DLL工程,名为project。在该工程下新建个类模块ClsTest,该模块下有一方法:
    Public Function getConn(ByVal cStrCon As String) As String
       getConn = cStrCon & " GetConn"
    End Function然后添加个新EXE工程,在该工程下调用:    
    Dim CT As project.ClsTest
    Set CT = CreateObject("project.ClsTest")
    MsgBox CT.getConn(“fengxujian”), vbInformation然后发布安装到客户端,运行时出现“运行时错误 '-2147467225 (800040277)' Automation 错误”,在服务器运行则无报错,是不是客户端调用时出现了错误?
      

  7.   

    CreateObject 要指定服务器,第二个参数不能省略。
      

  8.   

    to Tiger_Zhao:
    Set CT = CreateObject("project.ClsTest",cServerName)
    cServerName可以是服务器IP或服务器名字,但情况还是一样的,服务器能运行,客户端则报错。不知道你以前遇到过类似的情况没?
      

  9.   

    没有,参考一下
    http://topic.csdn.net/t/20041117/17/3562446.html
    http://topic.csdn.net/t/20040713/12/3170015.html
    http://topic.csdn.net/t/20040905/17/3342083.html
      

  10.   

    谢谢tiger_zhao
    我在win2000下测试成功了,win2003还不行
    先不管它了,有交代就行。
      

  11.   

    就是,win2003的com+权限控制机制和win2000好象不太一样。