客户端需要test.dll,因为组件的接口、组件类等信息要在客户端注册表中注册。
用dcomcnfg来配置决定调用组件时在本地或远程计算机创建组件实例,以及安全性设置。

解决方案 »

  1.   

    to rickeylv:
       谢谢,但是如果客户端需要test.dll,那我一但升级了此dll,是否所有的客户端还要再拷贝
    一份最新的呢?如果是,有20个客户的话不是很麻烦?那和普通的com有什么区别?
      

  2.   

    to allex
      我也有这感觉但是,
       1、为什么有导出功能做的文件在安装后会把test.dll也装上
       2、用什么方法在客户端上配置
       3、dcomcnfg的用法是什么?
      

  3.   

    1.用VC的导出功能不会装上test.dll
    2.在客户不需要任何配置,但要在服务器上配置.
    3.你把test.dll注册到MTS中,可以不用dcomcnfg.性能更好.
      

  4.   

    to allex:
    非常感谢。同时。
     1、我用的是2000中的组件服务中的导出功能
     2、客户不配置,我用VB的CREATEOBJECT时,它如何知道到哪里去找组件信息?
      

  5.   

    VB中的CREATEOBJECT有第二个参数可以指定服务器名称.
    VC中在客户端好象只要导入类库就可以了.
      

  6.   

    我试过,如果本地组件不注册,在createobject中加了服务器名也没用。但在是本地注册就需要此组件的dll这就又回到了上面的问题。
    难道是注册后再删除?
      

  7.   

    另外:
       为什么我用regsvr32 test.dll后,
       在dcomcnfg中没找到我的组件?
      

  8.   

    另外:
       为什么我用regsvr32 test.dll后,
       在dcomcnfg中没找到我的组件?
      

  9.   

    请看msdn 关于MTS,com+文章
    只要保持部件的接口不变,不必在客户端从新注册com的Proxy,
    客户端注册com的proxy后,在proxy中已经记录了服务器的地址
    所以能正确找到服务器,不必指定服务器.
      

  10.   

    to woohu:
      如果我的com中新增了接口呢?
      

  11.   

    这种情况我遇到过,一般是你服务器端的权限/规则的设置有问题.
    你可以用引入一般DLL文件的方式引入这个DCOM组件,然后在客户段文件打包的时候不要把这个组件打包在内,还要添加一个*.vbr的文件,它将帮助安装文件确定组件的位置,并且在打包时不要选择远程自动化控制.