C# COM 互操作,尝试访问远程 COM 服务器0x80070005错误

本文关键字:COM 服务器 错误 0x80070005 互操作 访问 | 更新日期: 2023-09-27 18:36:29

我有一个用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中的任何方法时,请说测试。连接(客户端 ID,错误代码),我收到异常"访问被拒绝。(HRESULT的例外:0x80070005(E_ACCESSDENIED))'。

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

现在没有选择尝试。我没有时间修复它,并且已经花了 4 天的时间在谷歌上搜索。但是没有运气。

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

提前致谢,西塔

C# COM 互操作,尝试访问远程 COM 服务器0x80070005错误

嗨,

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

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

然后你会发现"Microsoft xxx应用程序"。就我而言,它是在DECOM配置下Microsoft Excel应用程序。在属性上,我已经将所有证券设置为自定义和标识选项卡中的"标识"到"交互式用户"。

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

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

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

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

我有完全相同的设置并面临完全相同的错误0x80070005并尝试了所有可能的配置。请让我知道您是否找到了克服此访问被拒绝问题的根本原因。我已经花了4天的时间了:-)