本文可帮助你解决 Windows Presentation Framework (WPF) 应用程序中发生的问题 System.Runtime.InteropServices.COMException
。
原始产品版本: .NET Framework 4.7、Windows 7 Service Pack 1、Windows Server 2008 R2 Service Pack 1
原始 KB 数: 4033488
症状
请考虑以下方案:
- 你有一个运行Microsoft Windows 7 Service Pack 1(SP1)或 Windows Server 2008 R2 SP1 的触摸设备。
- 某些 WPF 应用程序正在设备上运行。
- 在设备上为 .NET Framework 4.6、4.6.1 和 4.6.2(KB 4104606)安装 2017 年 5 月质量汇总预览版。
- 然后在设备上安装 .NET Framework 4.7。
在此方案中,WPF 应用程序会失败并生成错误消息:
异常类型:System.TypeInitializationException
消息:“MS”的类型初始值设定项。Win32.Penimc.UnsafeNativeMethods 引发异常。
InnerException:System.Runtime.InteropServices.COMException
内部异常的消息:未注册类(HRESULT 异常:0x80040154(REGDB_E_CLASSNOTREG))
决议
若要解决此问题,请从 Microsoft 更新目录中安装 .NET Framework 4.6、4.6.1、4.6.2 和 4.7 的 2017 年 7 月 25 日更新。
Windows 7 SP1 和 Windows Server 2008 R2 SP1
从Microsoft更新目录下载独立包 。 有关此更新的详细信息,请参阅 KB 4035510。
Windows 8.1 和 Windows Server 2012 R2
从Microsoft更新目录下载独立包 。 有关此更新的详细信息,请参阅 KB 4035509。
Windows Server 2012
从Microsoft更新目录下载独立包 。 有关此更新的详细信息,请参阅 KB 4035508。
解决方法
若要解决此问题,请卸载并重新安装 .NET Framework 4.7。 或者,暂时禁用受影响的 WPF 触摸组件。
卸载 .NET Framework 4.7
在控制面板中,选择“程序”类别中的“卸载程序”。
在程序列表中,找到并选择 Microsoft .NET Framework 4.7,然后选择“ 卸载/更改”。
在 .NET Framework 4.7 维护向导中,从此计算机中选择 Remove.NET Framework 4.7,然后选择“下一步”。
如果出现以下警告窗口,请选择“ 继续”。
等待卸载完成。
重新安装 .NET Framework 4.7
若要重新安装 Microsoft .NET Framework 4.7,请使用以下方法之一。
方法 1:手动下载并安装 .NET Framework 4.7
- 下载 .NET Framework 4.7 的 Web 安装程序。
- 安装 .NET Framework 4.7。
方法 2:使用Windows 更新安装 .NET Framework 4.7
打开Windows 更新。
选择“联机检查Windows 更新中的更新。
搜索更新完成后,选择 “可选更新可用”。
找到并选择 Microsoft .NET Framework 4.7 for Windows 7 和 Windows Server 2008 R2,然后选择“ 确定”。
等待安装完成。
暂时禁用对 WPF 应用程序的触摸和触笔支持
若要暂时禁用触摸和触笔支持,请使用以下方法之一。
将以下条目添加到 应用程序配置 ,以禁用对 WPF 应用程序的触摸和触笔支持。
<runtime> <AppContextSwitchOverrides value=" Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport=true"/> </runtime>
应用以下注册表子项以禁用对 WPF 应用程序计算机全局的触摸和触笔支持。
警告
如果您使用注册表编辑器或其他方法不正确地修改注册表,可能会出现严重问题。 这些问题可能需要重新安装操作系统才能解决。 Microsoft 不能保证可解决这些问题。 您应自行承担修改注册表的风险。
- 位置:
HKEY_LOCAL_MACHINE\Software\[Wow6432Node\]Microsoft\.NETFramework\AppContext\Switch.System.Windows.Input.Stylus
- 名称:
DisableStylusAndTouchSupport
- 类型:字符串
- 值:
true
- 位置:
参考文献
有关 .NET Framework 4.7 中的已知问题的详细信息,请参阅 .NET Framework 4.7 的已知问题。