4

我收到此错误

来源:DCOM
Event_ID:10010

“服务器 {6FC4FDAE-96C8-11D3-9F9C-005004053207} 未在要求的超时时间内向 DCOM 注册。”

这是针对一个特定的 exe,当它作为本地系统运行时工作正常,但在非内置管理员下运行时会失败。我需要 exe 在非内置管理员下运行。

目前,我在装有 Citrix 的 Win 2k3 机器上遇到了这个问题。

但是我之前在 XP 机器上也遇到过这个问题。

关于解决问题的任何提示?

4

3 回答 3

7

由于我不完全理解上下文...这里有一些技巧可以帮助您解决问题...它有助于在原始计算机和目标计算机上拥有管理员权限...。(至少配置和检查)

DCOM 可能令人眼花缭乱。在处理跨机器边界的 DCOM 时,问题很可能是本地机器和应用程序的冲突和/或没有凭据、防火墙和 DCOM 设置的安全性。就 80/20 原则而言……这里有一些简单的规则可以帮助您了解情况。

首先,让安全可见:在您的原始计算机上启动 SecPol.MSC,找到本地策略/审计策略并打开对每种事件类型的审计。您最好在目标机器上执行此操作。

Crank Up DCOM 事件记录也是如此。按照这些说明http://support.microsoft.com/kb/892500

其次,更改已知的默认工作组设置,以便在整个 DCOM 上进行操作。确保在原始计算机和目标计算机上都禁用简单文件共享(也称为仅限访客身份验证)。如果两者都在域中,则它可能已被禁用。否则... secpol.msc\security settings\security options\network access:共享为本地帐户的安全模型(设置为经典)

第三,掌握所需的安全性......

如果两台机器都在不同的域中或其中一台(或两台都在工作组中)了解所需的通用安全性;也就是说,凭据必须在每台机器上通用或同步。也就是说,对于在原始计算机上运行进程的登录,目标计算机上必须存在相同的凭据。对于同一域中的两者,不要担心,因为一台机器的基于域的凭据将与另一台机器相同。

第四,如果可以的话,把防火墙移开。

暂时禁用它..但前提是它是安全的。否则,假设 netbios 端口和您的应用程序为 exename (135/139udp)。使用的端口是一个假设;即这可能不对。

第五,在它变得太复杂之前......只需尝试引发错误(运行程序)并查看两台机器上的系统和安全日志。如果这是一个安全问题,它会像拇指酸痛一样突出,您可以进行相应调整。

如果没有,dcomcnfg 将成为您的朋友。特定组件的 DCOM 设置按以下顺序解析:执行代码、程序设置和默认机器设置。Dcomcnfg 将帮助您解决后两者。您可以在http://www.opcfoundation.org/DownloadFile.aspx?RI=326找到一些更具体(但经过简化)的说明

如果卡住了,请跟进......

于 2009-07-21T04:38:31.170 回答
1

就我而言,我机器上的 XP 是由我公司的 IT 人员修改的。所以他们有一些组策略,即使是管理员组也拒绝访问某些 DCOM 设置。

解决方法是在使用内置管理员帐户凭据打开的命令提示符中手动注册 DCOM 服务器。

于 2009-12-13T04:00:51.810 回答
1

使用 DCOM 时的权限问题会让你很痛苦……它们介于系统管理员和程序员之间,直到一个人对对方的部分了解得足够透彻之前,它们可能很难克服。

至于您的特定问题,此错误消息的原因是服务器启动时间过长,延迟了对 CoRegisterClassObject 的调用,直到超时到期。在查看 COM 之前,我会在您的服务器启动中查找问题的原因。检查您所做的任何初始化(全局变量构造函数等)并确保没有引发异常。更改用户可能会导致某些目录或注册表配置单元无法访问,可能会破坏初始化。

我要做的是首先使用ProcMon监视服务器活动。这将很容易找到任何拒绝访问的问题,并向您显示相关的堆栈跟踪。如果需要调试,您可以按照这些说明在启动 exe 后立即附加调试器。最后,如果问题出现在没有VS的机器上,可以改用WinDBG来调试进程。

于 2009-07-17T14:00:25.933 回答