.NET 6 32位COM组件comhost注册失败(错误0x80008083)求助
以下是可能的原因及对应解决方向:
未安装32位.NET 6 Desktop Runtime:
目标机若仅安装了64位.NET 6运行时,无法适配32位的xxx.comhost.dll。需确保安装x86版本的.NET 6 Desktop Runtime(因组件依赖Microsoft.WindowsDesktop.App),而非仅64位版本。运行时版本匹配异常:
你的runtimeconfig.json指定了"version": "6.0.0",即便设置了"rollForward": "LatestMinor",仍可能因32位环境的路径逻辑导致宿主无法定位高Minor版本的运行时库。可尝试将版本改为目标机已安装的具体版本(如6.0.25),或简化为"version": "6.0"让系统自动匹配最新兼容版本。文件部署不完整:
确保xxx.comhost.dll、托管组件主dll(如xxx.dll)和xxx.runtimeconfig.json三者在同一目录下。宿主加载时需读取同目录的runtime配置文件来定位运行时依赖,文件缺失或路径错误会引发加载失败。注册权限不足:
尝试以管理员身份启动命令提示符,再执行regsvr32 xxx.comhost.dll。部分场景下权限不足会伪装成依赖缺失的错误。运行时安装损坏:
目标机的32位.NET 6运行时可能存在文件缺失或损坏。可卸载现有x86版本的.NET 6 Desktop Runtime,重新下载安装包执行完整安装或修复操作。运行时库路径异常:
检查目标机C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\6.x.x和Microsoft.WindowsDesktop.App\6.x.x目录是否存在且文件完整。32位程序依赖的运行时库需存放在x86对应的dotnet目录下,若目录缺失或文件不全则会触发加载错误。
内容的提问来源于stack exchange,提问作者R.J. Dunnill

