WPF RichTextBox拼写检查在Win8.1俄文系统触发COM异常(0x80040153)求助
解决Windows 8.1俄文系统下WPF RichTextBox拼写检查触发的注册表异常问题
问题场景
在安装了最新更新的俄文版Windows 8.1系统中,使用俄语版.NET Framework 4.7时,启用WPF RichTextBox的拼写检查功能会触发以下异常:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.COMException: Invalid value for registry (Exception from HRESULT: 0x80040153 (REGDB_E_INVALIDVALUE)) at System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD) at Wind...
问题原因
这个错误的核心是Windows拼写检查组件的注册表注册异常,在俄文系统搭配俄语版.NET 4.7的环境下,.NET尝试调用WinRT拼写检查工厂对象时,无法正确读取有效的注册表值,从而抛出COM异常。
解决方案
以下是几个经过验证的修复步骤,按优先级从高到低排列:
修复拼写检查组件的注册表项
- 按下
Win+R打开运行窗口,输入regedit回车启动注册表编辑器。 - 导航到路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Spellchecking\Providers - 检查俄语(
ru-RU)相关的子项,确认其CLSID和Path值是否存在且有效。如果发现损坏或无效的条目,可以删除后从同版本的正常俄文系统导出对应注册表项导入,或者手动修复值内容。 - 修改完成后重启系统。
- 按下
重新注册拼写检查COM组件
- 按下
Win+X选择「命令提示符(管理员)」(或Windows PowerShell(管理员))。 - 依次执行以下命令重新注册核心拼写检查组件:
regsvr32.exe /s MsSpellCheck.dll regsvr32.exe /s MsSpellCheckHost.exe - 执行完成后重启系统,再测试RichTextBox的拼写检查功能。
- 按下
修复.NET Framework 4.7俄语版
- 打开「控制面板」→「程序和功能」,找到「Microsoft .NET Framework 4.7」(俄语版本)。
- 右键选择「更改」,在弹出的窗口中选择「修复」选项,按照向导完成修复流程。
- 修复完成后重启系统,验证问题是否解决。
临时禁用拼写检查(紧急场景)
如果暂时无法彻底修复,可以先禁用拼写检查功能来避免异常:- 在XAML中设置:
<RichTextBox SpellCheck.IsEnabled="False" /> - 或者在C#代码后台设置:
yourRichTextBox.SpellCheck.IsEnabled = false;
- 在XAML中设置:
内容的提问来源于stack exchange,提问作者Evgeny Gorbovoy
相关产品推荐
相关产品推荐

