DCOM代理通过模拟

时间:2016-05-11 09:36:43

标签: c++ proxy com vc6 dcom

我们有一个DCOM应用程序,有很多业务方法。该应用程序是用VC6编写的,运行正常,并作为DLL部署。

从托管DCOM DLL的计算机(DCOM Server)调用时,使用DCOM内容的应用程序正常工作。

编辑4: DCOM应用程序托管有以下属性

enter image description here

问题在于分布式部署,其中导出DCOM应用程序的代理(通过从DCOMCNFG导出为代理),并安装在另一台PC(DCOM客户端)中。在这种情况下,DCOM测试应用程序无法正常工作。

在检查先决条件时,我们发现了以下条件

  1. DCOM Server和Client都必须位于同一个WORKGROUP或 域(两个PC现在都在同一个WORKGROUP中)
  2. 两台PC都必须可以访问
  3. 在两者中添加适当的防火墙例外或防火墙 PC或需要关闭
  4. PC必须具有相同用户名和密码的登录名(在同一密码的PC中创建一个名为'demoUser'的用户)
  5. 我们已经完成了所有先决条件,但应用程序仍然无效:(

    我们是否遗漏了任何内容或任何设置?

    请指导我。提前谢谢。

    编辑1:在客户端尝试时,测试应用程序无法创建对象本身。

    编辑2: [已解决]错误

    Error and Error Code

    编辑3: 将两台PC放在同一子网中时(子网之间有硬件防火墙),解决了上述问题。

    [新错误]如果PC使用相同的用户使用相同的密码登录,则应用程序正在运行,但在WORKGROUP中。但是,如果在任何PC中更改了密码,则应用程序会抛出以下错误。

    System.InvalidCastException: Unable to cast COM object of type 'MyDCOM.ApplicationClass' to interface type 'MyDCOM.IApplication'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{18B31ADE-04BF-445A-ADE9-0984EBF49D8F}' failed due to the following error: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).
    

0 个答案:

没有答案