我正在学习在com下的编程.
我建立了两个简单的程序:
服务端程序建立了"typelibrary"和"AutomationObject"
客户端如下;
procedure TForm1.Button1Click(Sender: TObject);
var
MyObject:IUnknown;
const
x: TGUID = '{27C3AAB8-2D73-4B4C-996F-F7E4BC117671}';
begin
MyObject:=CreateRemoteComObject('Yhy',x);
try
showmessage('ddd');finallyend;
end;在同一台机器上测试没有问题,
可是如果把客户端放到另一台机器上时只要一点击button就会提示"拒绝访问"不知为什么,请大家帮帮忙?

解决方案 »

  1.   

    没有权限访问网络中服务器的DCOM或COM+组件。也就是说,你的DCOM或COM+组件需要做安全性配置,否则谁都可以随意调用,那岂不乱套啦。这类问题的帖子应该比较多了,到“网络通信/分部式开发”版块中搜索一下。
      

  2.   

    to  ddqqyy(ddqqyy) ( )  
    是不是在dcomcnfg中设置啊(我已经设置好了)?有些贴好象是说要在客户端注册个dll可我的成序就没有涉及到dll?
      

  3.   

    权限不够!
    检查一下
    1.客户端的用户名称是否在服务器的COM角色中有激活权限
    2.用UNC路径访问一下服务器(\\servername\c$),很可能没有权限
      

  4.   

    Home Edition Or Basic版本的客户机OS最讨厌,用户名与进程拥有者的名称不符!
    以上第2条登陆时用你在Servername建立的用户名与密码
      

  5.   

    to  liangpei2008(笑青天) 
    试过啦!没问题.
    我以前曾做过一个midas的程序运行正常.我想midas也是通过com啊!
    是不是在客户端注册个什么东西?因为用midas时需要注册midas.dll.
    谢谢!
      

  6.   

    DCOM和COM+是属于微软操作系统级的东西,它们是在“控制面板/管理工具/服务”中进行配置的。建议楼主看看李维的《Delphi.5.X.ADO.MTS.COM+高级程序设计篇》一书,再查查微软MSDN上的相关知识。心急吃不了热豆腐哦。
      

  7.   

    to  liangpei2008(笑青天) 
    当然要导出一个代理安装到客户端啦~
    -------------------------------
    能给详细讲讲吗?怎样导出一个代理啊?
    谢谢!
      

  8.   

    一般来说,客户端不安装组件关系也不大的,只要使用CreateRemote方法,另外服务器上访问权限、启动权限中需要增加匿名的访问(anonymous logon),如果是2003的操作系统肯定是需要设置这些东西的,否则就会碰到拒绝访问的情况
      

  9.   

    to  JimmyV(流浪的风) 
    我用的是windows2000
      

  10.   

    to JimmyV(流浪的风) 
    另外服务器上访问权限、启动权限中需要增加匿名的访问(anonymous logon),
    ----------------------------------------------------------------------
    在什么地方设置是在dcomcnfg中吗?
      

  11.   

    在dcomcnfg中的默认安全机制中,“默认访问权限”和“默认启动权限”中增加
      

  12.   

    to  JimmyV(流浪的风)  
    没有(anonymous logon)这样一个用户阿(wondows2000)!
    我该增加什么呢?
      

  13.   

    哦,这个是我弄错了,只有xp以上的OS才有的
    Windows2000的话,主要增加EveryOne就可以了
      

  14.   

    在你的单元里引用一下midaslib 即uses midaslib  然后将服务器上的DCOM组件的启动和激活权限添加一下everyone.
      

  15.   

    to  JimmyV(流浪的风)  
    如你所说我已经照做了可又出现这样的提示"Interface not supported"
    请问我该怎么改?谢谢!