【发布时间】: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"))