【问题标题】:C# COM Interop, try to access remote COM server gets 0x80070005 ErrorC# COM 互操作,尝试访问远程 COM 服务器得到 0x80070005 错误
【发布时间】:2012-06-07 05:26:58
【问题描述】:

我有一个用 c# 编码的 WPFApplication 来访问 COM 组件。我从我的应用程序中添加了对 COM 组件的引用。当我在同一台机器上同时拥有客户端(我的应用程序)和服务器(com)时,它会按预期工作。 问题是当它们在不同的机器上时。两台机器都是一样的,我的意思是有 Windows 7 操作系统。并且都在同一个域上。我试图用下面的代码创建一个 com 组件的实例,它没有给我任何错误

IPDSIntf test; 
string clsId = "85689616-277B-4E00-9A5E-19AD78E7E0E2";
var type = Type.GetTypeFromCLSID(new Guid(clsId), MachineName, true);
                var COMObject = Activator.CreateInstance(type);
                test = (IPDSIntf)COMObject;

现在当我调用 COM 中的任何方法时。说 test.Connect(clientId, errorCode),我收到异常“访问被拒绝。 (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))'。

设置了许多权限,在服务器机器上为我的用户帐户授予管理员权限,将我的帐户添加到“分布式 COM 用户”组等...但仍然遇到同样的问题。对于所有类型的用户(匿名、网络、每个人......),通过 DCOMCNFG 和谷歌搜索时看到的所有内容,在服务器计算机的 COM 安全选项中提供“本地和远程”访问权限。客户端和服务器中的防火墙均已关闭。

现在别无选择。我没有时间来修复它,并且已经用谷歌搜索了 4 天。但没有运气。

还有一件事,我在 DCOMCNFG 中看不到我的 COM,表示它没有注册吗?可能是什么原因。我相信机器中的所有 COM 组件都会在组件服务中注册。也需要对此进行一些澄清,因为我怀疑它与我的问题有某种关系。

提前致谢, 西塔

【问题讨论】:

  • 尝试在管理员模式下启动你的 VS。两台机器上的用户是否相同?
  • 尽管它说拒绝访问可能是一个依赖问题。看看这篇文章,可能会提供一些线索,虽然它是基于 java 的。 (j-integra.intrinsyc.com/support/com/doc/remoteaccess.html)
  • 感谢 xebo 。也在管理员模式下启动了 Visual Studio。没运气。是的,它在客户端和服务器中都是同一个用户。让我也通过那个链接...
  • “同一机器配置”在两台机器上工作?
  • 这在 PowerShell 中有效吗? $updatesession = [activator]::CreateInstance([type]::GetTypeFromProgID("Your.Prog.ID.Here", "machinename"))

标签: c# .net com com+ dcom


【解决方案1】:

您好,这个错误是给我做同样的事情,但在 Excel 应用程序上。我发现 excel COM 实际上是 32 位的,需要访问 32 位的 DECOM 配置。

您可以通过在运行时输入“comexp.msc /32”命令来访问 32 位 DECOM 配置。

然后您会找到“Microsoft xxx 应用程序”。在我的例子中,它是 Microsoft Excel 应用程序,在 DECOM 配置下。在属性上,我已将“身份”选项卡中的“自定义”和“身份”设置为“交互式用户”。

然后它对我有用。希望这对您也有帮助。

【讨论】:

    【解决方案2】:

    我已经回答了你的部分问题。

    您的组件未在 DCOM 中列出可能是因为它可能是 Activex dll。按照以下步骤使其在 dcom 中列出。

    开始-->运行-->oleview-->对象类-->所有对象(展开) 在左窗格中选择您的 COM。单击右窗格上的实施选项卡并选中“使用代理过程” 关闭 oleview 和 opn dcomcnfg,你的 COM 可能会列在那里。

    我的设置完全相同,但遇到了完全相同的错误 0x80070005,并尝试了所有可能的配置。请让我知道您是否找到了解决此访问被拒绝问题的根本原因。我已经在这上面花了 4 天 :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 2010-12-14
      • 2012-02-23
      • 2011-04-13
      • 1970-01-01
      • 2011-07-07
      • 2012-06-27
      相关资源
      最近更新 更多