我正在使用一个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中切换嵌入互操作类型。
有什么帮助吗?
发布于 2011-03-01 20:27:54
您看到的错误是RPC_E_SERVERFAULT,这意味着进程外COM服务器中存在未处理的Win32异常(例如,可能存在访问冲突)。如果您既没有COM服务器的源代码,也没有调试符号,就不太可能自己诊断或修复它。(编辑:除非是明显的东西,比如64位机器上的"bitness“不匹配:-)
选项:
发布于 2011-03-01 21:54:33
我刚从我们的朋友Hans Passant那里发现了这个,在微软的一个新闻组线程上。这篇文章很好,很中肯,我希望汉斯不会介意我引用它。
啊,可怕的RPC_E_SERVERFAULT。RPC在存根中安装SEH处理程序,用于捕获COM服务器中发生的任何SEH异常。即使是像AV这样非常糟糕的。客户端收到0x80010105的异常通知。这是可怕的,没有任何方法可以获得任何关于异常的信息。更糟糕的是,服务器只是继续运行,现在通常会因为异常而导致内部状态彻底混乱。对此您无能为力,只能尝试调试COM服务器,以找出它引发异常的原因。如果它对您来说是一个黑盒,那么您将有一段时间没有COM组件供应商的支持。
https://stackoverflow.com/questions/5152943
复制相似问题