.net 使用LocalSystem中的Com类

.net 使用LocalSystem中的Com类,.net,com,windows-services,.net,Com,Windows Services,我正在使用Com对象。com服务器应从作为特定帐户运行的Windows服务中使用。但是,当在这个帐户中运行时,它无法加载com,这给了我一个异常:从IClassFactory创建一个CLSID为{36998A63-857C-4B87-BC5E-72B7B3573F80}的com组件实例失败,原因是以下错误:80010105 我尝试将帐户更改为LocalSystem,但仍然失败,但将Windows服务更改为以我自己的帐户工作的方式登录 我想这与我的帐户上安装的com服务器有关。我使用com的nam

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

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

我想这与我的帐户上安装的com服务器有关。我使用com的name.exe/regserver安装com。我尝试以LocalSystem的形式运行该命令,但由于断言而失败。我没有代码,所以我不知道问题出在哪里,是否有我应该检查的权限? 我还尝试在VisualStudio中切换嵌入互操作类型


有什么帮助吗?

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

选项:

如果你应该能够激活 服务器并使用其COM 对象的上下文中的对象 服务的帐户,那么您将需要 向供应商提出此问题 服务器,并让他们进行诊断和 修好它; 您可以使用DCOMCNFG.EXE标识 选项卡来配置COM服务器 以您的身份运行 默认值是启动用户,并查看这是否避免了故障问题,从您所说的听起来可能会。
您看到的错误是RPC_E_SERVERFAULT,这意味着存在未处理的Win32异常,例如,进程外COM服务器中可能存在访问冲突。如果COM服务器既没有源代码也没有调试符号,则不可能自己诊断或修复此问题。编辑:除非64位机器上存在明显的位不匹配:-

选项:

如果你应该能够激活 服务器并使用其COM 对象的上下文中的对象 服务的帐户,那么您将需要 向供应商提出此问题 服务器,并让他们进行诊断和 修好它; 您可以使用DCOMCNFG.EXE标识 选项卡来配置COM服务器 以您的身份运行 默认值是启动用户,并查看这是否避免了故障问题,从您所说的听起来可能会。
我刚从我们的朋友那里,在一个微软新闻组的帖子上找到了这个。它是如此的好和中肯,我希望汉斯不会介意我引用它

啊,可怕的RPC_E_服务器故障。 RPC在中安装SEH处理程序 捕获任何SEH异常的存根 错误发生在COM服务器中。即使 真正糟糕的是AV。这个 客户机将收到有关异常的通知 使用0x80010105。太可怕了, 没有办法得到任何信息 关于例外情况。即使 更糟糕的是,服务器一直在运行, 现在典型的情况是一场彻底的混乱 由于 例外你无能为力 关于它,但试图调试COM 服务器来找出它抛出的原因 例外情况。如果它是一个黑盒子 你,你会玩得很开心的 没有COM组件的支持 卖主


我刚从我们的朋友那里,在一个微软新闻组的帖子上找到了这个。它是如此的好和中肯,我希望汉斯不会介意我引用它

啊,可怕的RPC_E_服务器故障。 RPC在中安装SEH处理程序 捕获任何SEH异常的存根 错误发生在COM服务器中。即使 真正糟糕的是AV。这个 客户机将收到有关异常的通知 使用0x80010105。太可怕了, 没有办法得到任何信息 关于例外情况。即使 更糟糕的是,服务器一直在运行, 现在典型的情况是一场彻底的混乱 由于 例外你无能为力 关于它,但试图调试COM 服务器来找出它抛出的原因 例外情况。如果它是一个黑盒子 你,你会玩得很开心的 没有COM组件的支持 卖主


您是否已使用DCOM配置设置激活权限?您好,sharptooth。我不知道那是什么,所以可能不是。我启动了DCOMCNFG.EXE并试图找到它,但我不能让你打开组件服务->这台计算机->DCOM配置,在那里找到你的proc COM服务器并调整它的设置。诀窍是我运行的是Windows 64位,COM服务器是32位,所以我需要像MMC comexp.msc/32一样运行它才能看到它。回答一下,这样我就可以接受了。你用DCOM配置设置激活权限了吗?嗨,sharptooth。我不知道那是什么,所以可能不是我启动了DCOMCNFG.EXE并试图找到它
,但我不能让你打开组件服务->这台计算机->DCOM配置,在那里找到你的proc COM服务器并调整它的设置。诀窍是我运行的是Windows 64位,COM服务器是32位,所以我需要像MMC comexp.msc/32一样运行它才能看到它。回答一下,,所以我可以接受。事实上,由于问题可能缺乏某些权限,他可以使用Process Monitor来尝试诊断问题。@sharptooth:我可能错了,没有Microsoft官方文档,但根据我的经验,RPC_E_SERVERFAULT通常表示服务器实现中的一个更基本的问题,例如访问违反或被零除的错误。缺少所需权限通常会显示为E_ACCESSDENIED 0x80070005的HRESULT。无论如何,看看过程监视器是否能告诉您任何事情,但我不确定您想要的是什么。。。。或者位不匹配:-将身份更改为交互式用户或设置我的帐户显式有效,因此我无法按我想要的帐户运行windows服务。这很好,但是为什么本地com服务器必须像它一样运行呢?在Windows Server 2003上运行时是否会遇到问题?我想不会有一个交互式用户一直可用?@Karsten:我建议更改COM服务器的标识,而不是Windows服务的标识,Windows服务仍然可以在服务帐户下运行。我不知道这是否能满足您的需要-我只是想为SERVERFAULT异常建议一种解决方法。如果服务可能在无人登录的情况下调用COM组件,您当然应该避免使用交互式用户。实际上,由于问题可能是由于缺乏某些权限,他可以使用Process Monitor尝试诊断问题。@sharptooth:我可能错了,没有Microsoft官方文档,但根据我的经验RPC_E_SERVERFAULT通常表示服务器实现中更基本的问题,例如访问冲突或被零除错误。缺少所需权限通常会显示为E_ACCESSDENIED 0x80070005的HRESULT。无论如何,看看过程监视器是否能告诉您任何事情,但我不确定您想要的是什么。。。。或者位不匹配:-将身份更改为交互式用户或设置我的帐户显式有效,因此我无法按我想要的帐户运行windows服务。这很好,但是为什么本地com服务器必须像它一样运行呢?在Windows Server 2003上运行时是否会遇到问题?我想不会有一个交互式用户一直可用?@Karsten:我建议更改COM服务器的标识,而不是Windows服务的标识,Windows服务仍然可以在服务帐户下运行。我不知道这是否能满足您的需要-我只是想为SERVERFAULT异常建议一种解决方法。如果服务可能在无人登录的情况下调用COM组件,您当然应该避免交互式用户。