对远程计算机的调用命令会导致 COMException (0x80040154)

本文关键字:COMException 0x80040154 命令 计算机 调用 | 更新日期: 2023-09-27 18:33:54

我有一个使用 COM 的 C#.NET 应用程序。

当我在本地调用应用程序(machine1)时,将按预期创建COM对象。

当我从另一台机器(机器 2)远程启动应用程序时

Invoke-Command -Session $session -ScriptBlock {path'theapp.exe}

应用程序启动(当然是在机器 1 上),但无法绑定 COM 对象:

 System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {C4DBE1C1-0608-48DF-AD9D-F34284FE7040} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
   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)

我不明白这怎么可能——因为如果在本地启动执行,COM 连接就会起作用,为什么运行时稍后会发现该类未注册?

感谢您的任何提示和指点!

对远程计算机的调用命令会导致 COMException (0x80040154)

问题解决了。

原因是 (1) 组件的调试/发布版本不匹配,以及 (2) 另一个组件没有作为它应该拥有的服务运行。

感谢您的阅读和发布!