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

Invoke-Command to remote machine leads to COMException (0x80040154)

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

当我在本地 (machine1) 调用应用程序时,COM 对象按应有的方式创建。

当我使用

从另一台机器 (machine2) 远程启动应用程序时
Invoke-Command -Session $session -ScriptBlock {path\theapp.exe}

应用程序启动(当然是在 machine1 上)但无法绑定 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 连接就可以工作,为什么运行时稍后会发现 class 没有注册?

感谢任何提示和指点!

问题已解决。

原因是 (1) debug/release 版本的组件不匹配,以及 (2) 另一个组件不是 运行 它应该有的服务。

感谢阅读和发帖!