C# System.UnauthorizedAccessException:创建COM组件实例失败,错误为80070005(C)

C# System.UnauthorizedAccessException:创建COM组件实例失败,错误为80070005(C),c#,node.js,windows,com,windows-services,C#,Node.js,Windows,Com,Windows Services,我对C#.NET命令行应用程序有一个问题,它的主要思想是使用COM对象从其他程序获取数据。当手动执行或作为Node.js服务器内的子进程运行时,它可以正常工作,但是当整个项目作为windows服务安装时,C#app会响应以下错误: System.UnauthorizedAccessException: Creating an instance of the COM component with CLSID {D64DB4A9-3B26-4D2B-B556-9DA433C54175} from t

我对C#.NET命令行应用程序有一个问题,它的主要思想是使用COM对象从其他程序获取数据。当手动执行或作为Node.js服务器内的子进程运行时,它可以正常工作,但是当整个项目作为windows服务安装时,C#app会响应以下错误:

System.UnauthorizedAccessException: Creating an instance of the COM component with CLSID {D64DB4A9-3B26-4D2B-B556-9DA433C54175} from the IClassFactory failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.Activator.CreateInstance(Type type)
   at CurrentCamUri.Program.Main(String[] args)
从我所阅读的内容和主要关注Office应用程序的类似线程来看,我应该在
dcomcnfg/32
中的“DCOM Config”选项卡中看到COM对象,但是我找不到任何与相关CLSID相关的内容。我尝试在没有“/32”后缀的情况下运行
dcomcnfg
,但也没有成功。我需要从中获取数据的主要应用程序是32位(我们称之为母应用程序)


有什么建议我该如何处理这个问题吗?我将非常感激。谢谢

确保Windows服务在具有访问COM组件权限的帐户下运行


您可以通过启动regedt32.exe来检查这些权限,进入HKCR\CLSID{D64DB4A9-3B26-4D2B-B556-9DA433C54175},右键单击并选择“权限…”。

谢谢您的回复。我尝试了regedt32.exe,但在HKCR\CLSID{D64DB4A9….}下没有任何内容,但是在使用搜索后,我发现此CLSID位于HKCR\ControlCenter.Automation\CLSID下。修改“权限”以允许对我的本地用户进行完全控制,并将Windows服务设置为“登录”同一用户,这仍然不起作用,同样的错误。如果它不在HKCR\CLSID\{D64DB4DA9..}下,请尝试在HKLM\Software\Wow6432Node\Classes下进行检查。我在HKLM\Software\Wow6432Node\Classes\CLSID\{64DB4A9…}下找到了它,权限似乎很好(对管理员/用户的完全访问权),我尝试添加具有完全控制权的用户名以防万一,但仍然不起作用。我想知道问题是否出在我处理COM的C#应用程序中?我不是每天的C#开发者。在HKLM\Software\Wow6432Node\Classes\AppID\{64DB4A9…}下是否也有它的条目?如果是这样,请按照抱歉检查启动权限,在前面的评论中,我没有看到CLSID前面的D。没有HKLM\Software\Wow6432Node\Classes\AppID\{D64DB4DA9…}这样的条目。