使用LocalSystem中的Com类

时间:2011-03-01 09:59:33

标签: .net com windows-services

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

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

我想这与我帐户上安装的com服务器有关。我使用“它的name.exe / regserver”安装com。我尝试将命令作为LocalSystem运行,然后失败并显示断言。我没有代码,所以我不知道问题出在哪里,是否有我应该检查的权限? 我也尝试在Visual Studio中切换嵌入互操作类型。

任何帮助?

2 个答案:

答案 0 :(得分:3)

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

选项:

  • 如果你应该能够激活 服务器并使用它的COM 在你的上下文中的对象 服务的帐户,那么你将需要 与供应商提出这个问题 服务器并让他们诊断和 修理它;
  • 您可以使用DCOMCNFG.EXE(身份 tab)配置COM服务器 改为以你的身份运行 默认情况下(即“启动用户”),看看这是否可以避免错误问题(这听起来就像你说的那样)。

答案 1 :(得分:2)

我刚从我们的朋友Hans Passant在Microsoft新闻组主题上找到了这个。它是如此的好和相关,我希望汉斯不介意我引用它。

  

啊,可怕的RPC_E_SERVERFAULT。   RPC在中安装SEH处理程序   捕获任何SEH异常的存根   发生在COM服务器中。甚至   非常糟糕的像AV。该   客户端会收到有关异常的通知   与0x80010105。哪个很糟糕,   没有办法获得任何信息   关于例外的任何事情。甚至   更糟糕的是,服务器只是继续运行,   现在通常有一个根本混乱   内部状态由于   例外。你无能为力   关于它,但试图调试COM   服务器找出它扔的原因   例外。如果是黑盒子的话   你,你会有一点时间   没有COM组件的支持   的供应商。