最近在学习COM的过程中发现在远程调用COM组件时总要在客户端也要注册组件,并且客户端的用户名要和服务器一样,DCOMCNFG也要使用交互用户,非常不好用,
在网上查发现大多数网友也是这样做的,但在看了MSDN发现CocreateInstanceEx的第三个参数是一个COSERVERINFO 类型的结构体,它还包括了一个COAUTHINFO的结构体,再查看COAUTHINFO的定义发现其中定义了很多和权限有关的东西,是否能通过设置此结构实现远程调用COM组件呢????

解决方案 »

  1.   

    看看snowring(飘飘然) 的post:http://www.csdn.net/expert/topic/861/861094.xml?temp=.1819727;);)
    - 微软全球技术中心 VC技术支持 本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款 
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。 
    为了为您创建更好的讨论环境,请参加我们的用户满意度调查 
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
      

  2.   

    acptvc也从亚洲技术中心变成了 全球,真是很跟得上形势啊
    前几天才升的啊
      

  3.   

    >>最近在学习COM的过程中发现在远程调用COM组件时总要在客户端也要注册组
    >>件
    这句话不准确。如果你使用先绑定 (early binding),那么客户端需要注册proxy/stub dll (或者tlb文件)。通常tlb文件是作为资源文件打包在组件DLL中,所以给你的印象好像在客户端也需要注册组件,实际上造成不必要的发布。如果你是通过使用IDispatch进行纯粹后绑定(late binding),那么并不需要在客户端注册什么,因为关于IDispatch,IClassFactory,IUnknown等interface的tlb在大多数支持DCOM的机器上已经预注册了。>>,并且客户端的用户名要和服务器一样,DCOMCNFG也要使用交互用户,非
    >>常不好用,
    这是因为你的客户端和服务器不在同一个Windows安全domain/groups中.因为DCOM的安全性建立在RPC的安全模型上,而RPC的安全模型使用Windows的安全模型上。不管你使用什么方法,DCOM server一定要能验证客户端传来的账户信息。我们推荐使用DCOM的系统建立在同一个Domain中。试想在一个安全文件系统(比如NTFS) 中如何共享文件给不在同一个trust domain机器用户?>>看了MSDN发现CocreateInstanceEx的第三个参数是一个COSERVERINFO 类型>>的结构体,它还包括了一个COAUTHINFO的结构体,再查看COAUTHINFO的定义>>发现其中定义了很多和权限有关的东西,是否能通过设置此结构实现远程调>>用COM组件呢????
    我们知道DCOM的security包括activation和access两方面。CoCreateInstanceEx()只对activation有作用。对于access方面,由于安全控制是per proxy,所以你要调用CoSetProxyBlanket。
    看看snowring(飘飘然) 的post,里面有调用CoCreateInstanceEx的代码,具体参数的使用和意义,你只有查查MSDN了 . ;-)
    http://www.csdn.net/expert/topic/861/861094.xml?temp=.1819727另外关于DCOM 的security的详细解释参看:
    Title:Security Briefs Q&A, MSJ November, 1998
    URL:http://www.microsoft.com/MSJ/1198/security/security1198.htm
    - 微软全球技术中心 VC技术支持 本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款 
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。 
    为了为您创建更好的讨论环境,请参加我们的用户满意度调查 
    (http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。