我有一个用 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 组件都会在组件服务中注册。也需要对此进行一些澄清,因为我怀疑它与我的问题有某种关系。
提前致谢, Nishitha