首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LocalSystem中的Com类

使用LocalSystem中的Com类
EN

Stack Overflow用户
提问于 2011-03-01 17:59:33
回答 2查看 2.6K关注 0票数 1

我正在使用一个Com对象。应从作为特定帐户运行的Windows服务中使用com服务器。但在此帐户下运行时,它无法加载com,给了我这样的异常:从IClassFactory创建具有CLSID {36998A63-857C-4B87-BC5E-72B7B3573F80}的COM组件的实例失败,原因是出现以下错误: 80010105。

我尝试将帐户更改为LocalSystem,仍然失败,但将Windows服务更改为以我自己的帐户登录。

我猜这与安装在我帐户上的com服务器有关。我使用"it's name.exe /regserver“安装com。我尝试以LocalSystem用户身份运行该命令,然后失败并返回一个assert。我没有代码,所以我不知道问题出在哪里,有没有我应该检查的权限?我还尝试在Visual Studio中切换嵌入互操作类型。

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-01 20:27:54

您看到的错误是RPC_E_SERVERFAULT,这意味着进程外COM服务器中存在未处理的Win32异常(例如,可能存在访问冲突)。如果您既没有COM服务器的源代码,也没有调试符号,就不太可能自己诊断或修复它。(编辑:除非是明显的东西,比如64位机器上的"bitness“不匹配:-)

选项:

  • 如果您应该能够在服务帐户的上下文中激活服务器并使用其COM对象,则需要向服务器的供应商提出此问题,并让他们对其进行诊断和修复;
  • 您可以使用DCOMCNFG.EXE (身份选项卡)将COM服务器配置为在您的身份下运行,而不是以默认身份(即“启动用户”)运行,并查看这是否可以避免故障问题(听起来与您所说的差不多)。
票数 3
EN

Stack Overflow用户

发布于 2011-03-01 21:54:33

我刚从我们的朋友Hans Passant那里发现了这个,在微软的一个新闻组线程上。这篇文章很好,很中肯,我希望汉斯不会介意我引用它。

啊,可怕的RPC_E_SERVERFAULT。RPC在存根中安装SEH处理程序,用于捕获COM服务器中发生的任何SEH异常。即使是像AV这样非常糟糕的。客户端收到0x80010105的异常通知。这是可怕的,没有任何方法可以获得任何关于异常的信息。更糟糕的是,服务器只是继续运行,现在通常会因为异常而导致内部状态彻底混乱。对此您无能为力,只能尝试调试COM服务器,以找出它引发异常的原因。如果它对您来说是一个黑盒,那么您将有一段时间没有COM组件供应商的支持。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5152943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档