对远程计算机的调用命令会导致 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 连接就会起作用,为什么运行时稍后会发现该类未注册?
感谢您的任何提示和指点!
问题解决了。
原因是 (1) 组件的调试/发布版本不匹配,以及 (2) 另一个组件没有作为它应该拥有的服务运行。
感谢您的阅读和发布!