2008-08-21 30 views
5

我正在与服务器和客户端上的两台机器,它们都带有Service Pack 2上运行WinXP的两台机器DCOM应用程序,我登录时使用的相同用户名和密码。DCOM:CoCreateInstanceEx返回E_ACCESSDENIED

当一台计算机上的客户端调用CoCreateInstanceEx,要求其他机器启动服务器应用程序,它返回E_ACCESSDENIED。

我试图进入服务器应用程序的组件属性在DCOMCNFG,充分permisions大家的一切,但没有帮助。

我需要做些什么才能让此通话成功?

更新:当服务器应用程序在Windows 2000机器上运行时,我不会收到此错误; CoCreateInstanceEx返回S_OK。

回答

1

三件事来检查:

1)回到DCOMCNFG,并尽量确保不只是访问的安全性,但也是“启动权限”部分包含适当的安全用户或组。

2)确保身份验证级别设置为“无”

3)别的其他还要检查该组件位于磁盘上的位置是在安全权限配置的帐户实际上访问你设置。

编辑:

还有一个:你叫CoInitialiseSecurity()第一吗?那响铃!

EDIT2:

根据您的更新:尝试在XP的机器完全丢弃的防火墙,看看是否有差别。您可能需要明确地让DCOM通过。

2

正确,所以如果您的身份验证级别设置为默认。什么是默认设置中设置的认证级别?只是出于兴趣。 (虽然它的工作原理为2000箱的事实可能会让冗余)

编辑:

另外:我好像记得做我以前玩DCOM /工作,所以也许快速重启的很多当你对dcomcnfg设置感到满意时,重新启动两台机器也不会发生故障。

+0

[@Shaun Austin II:](http://stackoverflow.com/questions/20841#20930)全局默认身份验证级别设置为连接,并且默认模拟级别设置为识别。 **更新:** ...我尝试重新启动,问题依然存在。感谢您的所有建议,但我仍然错过了一些东西。 – 2008-08-21 19:59:31

0

什么是你的Windows 2000框的味道,顺便说一句?专业,服务器,服务器进阶...

此外,有没有两者之间的域成员之间的差异(在一个域,其他没有,不同的领域,等等...?)

还有一事情 - 有时DCOM错误会出现在系统事件日志中 - 尤其是对象创建 - 您是否在那里检查线索?

0

我有完全相同的问题。 该问题发生在具有XP SP2 + OS或更新版本的机器上。

我解决它使用以下步骤:

  1. 验证客户端和服务器计算机都在同一个域。

  2. 您需要在两台计算机上使用相同的用户,或者如果要在客户端和服务器中使用不同的用户,则需要确保客户端和服务器用户在两台计算机上都具有特权(特别是 - 使确保它们是分布式COM用户组的成员。

  3. 开放服务组元MMC(运行DCOMCNFG)。

  4. 转到我的电脑“属性 - >默认属性,并确保默认Impersenation级别是”标识“

  5. 转到COM安全选项卡,在访问权限和启动和激活权限中选择编辑限制,并将本地和远程访问权限添加到COM应用程序的客户端和服务器用户。在端口135防火墙例外您的应用程序...

我希望这可以帮助你!

2

如果PC不是同一个域的成员,则还需要启动&访问“ANONYMOUS LOGON”的权限。 “每个人”都不包括这一点。

+0

这为我做了诀窍.` – fakeleft 2012-06-13 13:57:30