我也想知道,如何从任意机器访问DCOM 服务程序?

解决方案 »

  1.   

    给你一篇我抄的文章,也许有帮助
    使用DCOM,客户端和服务器要如何进行网络配置?
    1,确认你的COMPONENT不是in-process dll
    2,确认你的95能用DCOM,
    看一下:
    HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\OLE的ENABLEDCOM 是否为Y。
    3确认你的95和NT能够网络通讯。
    4,修改你的Component注册CODE,用CLSCTX_ALL: 
    CoRegisterClassObject(clsid,***,CLSCTX_ALL,***,***)
    5,客户端call CoCreateInstance时,用CLSCTX_ALL or 
    CLSCTX_REMOTE_SERVER.
    6,如果还不行,则CALL COM时,干脆写上你的SERVER名,
    用:CoCreateInstanceEx(CLSID,NULL,CLSCTX_REMOTE_SERVER,
    &ServerInfo,1,&mqi);
    其中ServerInfo是:
    COSERVERINFO ServerInfo;
    memset(&ServerInfo,0,sizeof(ServerInfo));
    ServerInfo.pwszName=L"MyRemoteServer";
    7,如果还不行,估计是Security问题,但出现的错误已不是"can't find RPC server".
      

  2.   

    这个不大可能,没有登录domain的是不能通过安全认证的
    不知道你用什么语言?
    VC下我没什么办法,在CBuilder/Delphi下可以用TSocketConnection
      

  3.   

    大侠:我也遇到同样问题。
    不过我认为:“没有登录domain的是不能通过安全认证的”好象不一定吧,因为COM+中
    本身带有INTERNET特性的。如DCOMCNFG中有OPTION 打开“USE COM INTERNET SERVICE IN THIS MACHINE。”,难道要客户机通过INTERNET登陆到DOMAIN??   但事实上我确实调不通。求教。
      

  4.   

    实际上在配置COM的时候是有一个界面的,可以让你的COM与用户交互(因为你的COM是设计成交互的了),然后在那里配置你的用户和密码,这样可以不用登陆进去就可以运行你的COM了(尤其适合于主机托管的情况)
    对了,给分哦
      

  5.   

    2水兔子大侠:您说的配置界面应该是指在SERVER上用DCOMCNFG配置的时候,
    ‘IDENTITY’选项不选择默认的“THE LAUCHING USER”而选择“THIS USER”吧。
    但请问,如果我客户机不用登陆到DOMAIN的化,客户机(WIN95+安装了DCOM98)上的用户名和密码在何处输入呢?
    难道是‘WINDOWS登录‘的密码?有用吗??
      

  6.   

    在2000里面有这么一个步骤(NT也差不多)
    1.在COM+应用程序的鼠标右键我们“新建”一个“应用程序”
    2.然后系统会弹出一个COM应用程序的安装向导。我们选择“创建一个空的应用程序”
    3.我们为该COM组件输入一个名称为
    4.在“设置应用程序标识”里面我们赋予你的用户。通过“浏览”我们可以找到你的用户,赋给其密码并确认。(这里面有两项a.交互式用户-当前已登陆的用户b.此用户,下面就有用户名和密码的设置文本框),我们当然选b了,在这里添上你的访问数据库的用户名和密码了,这样就可以了,我的身边没有NT的机器,不知道具体的NT怎么配置的,不过肯定差不多的
      

  7.   

    iwome,感谢您的回复。不过我们现在想用的是COM+ 的INTERNET SERVICE功能,就是说客户端不登录到NT NETWORK DOMAIN, 在INTERNET上要REMOTE 创建对象。“通过“浏览”我们可以找到你的用户”--其中,找到的还是DOMAIN中的用户。  其实一定是可行的,比如ASP,就通过SERVER对象屏蔽了在REMOTE创建对象的细节。 还有比如我的客户端是没有直接直接访问SERVER DATABASE的过程的,也没有ACCESS SERVER DB的用户和密码(3 层TIER),我的客户端只是设计为远端访问APP SERVER上的一个‘INTERFACE’的进程外COM组件,再由其去使用进程内组件来调用DATABASE SERVER。  局域网之内当然能调通了,我们只是希望能给INTERNET 上用户不用登录到局域网来用,就是不知道这样的设计错在哪儿,为什么通过INTERNET 直接由SERVER的IP来远端RUN组件老是不通,给我一个‘ACCESS DENY‘,我已经把SERVER ACITIVIATE COMPONENT的权限配为EVERYONE了, 我的客户端是自带DCOM的98SE,SERVER是NT4+SP6+MTS。(COM INTERNET SERVICE 已经打开 ),客户端上已经把要调用的远端组件的接口定义进行了注册。    请帮帮 我。