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

C# C COM互操作,尝试访问远程COM服务器获取0x80070005错误,c#,.net,com,com+,dcom,C#,.net,Com,Com+,Dcom,我有一个用c编写的WPF应用程序来访问COM组件。我已从我的应用程序添加对COM组件的引用。当我在同一台机器上同时使用clientmy app和servercom时,它会按预期工作。 问题是当它们在不同的机器上时。两台机器都是相同的,我的意思是有Windows7操作系统。并且都在同一个域上。我尝试用下面的代码创建com组件的实例,它没有给我任何错误 IPDSIntf test; string clsId = "85689616-277B-4E00-9A5E-19AD78E7E0E2"; var

我有一个用c编写的WPF应用程序来访问COM组件。我已从我的应用程序添加对COM组件的引用。当我在同一台机器上同时使用clientmy app和servercom时,它会按预期工作。 问题是当它们在不同的机器上时。两台机器都是相同的,我的意思是有Windows7操作系统。并且都在同一个域上。我尝试用下面的代码创建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.ConnectclientId、errorCode,我收到异常“访问被拒绝”。来自HRESULT的异常:0x80070005 E_ACCESSDENIED'

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

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

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

提前感谢,,
Nishitha

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

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

然后您将找到Microsoft xxx应用程序。在我的例子中,它是MicrosoftExcel应用程序,在DECOM配置下。在属性上,我已将身份选项卡中的所有安全设置为Custom,并将身份设置为Interactive User


然后它对我起作用了。希望这也能对你有所帮助。

我已经回答了你部分问题

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

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


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

尝试在管理模式下启动VS。这两台机器上的用户是相同的吗?尽管它说拒绝访问可能是一个依赖性问题。看看这篇文章,可能会提供一些线索,尽管它是基于java的。谢谢xebo。也在管理模式下启动了visual studio。不走运。是的,它在客户端和服务器中都是同一个用户。让我也来看看这个链接……相同的机器配置在两台机器上都有效吗?这在PowerShell中有效吗$updatesession=[activator]::CreateInstance[type]::GetTypeFromProgIDYour.Prog.ID.Here,machinename