在 Windows 7 或 Windows Server 2008 R2 上安装 .NET Framework 4.7 之后,来自 WPF 应用程序的 COMException

本文可帮助你解决 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 日更新。

解决方法

若要解决此问题,请卸载并重新安装 .NET Framework 4.7。 或者,暂时禁用受影响的 WPF 触摸组件。

卸载 .NET Framework 4.7

  1. 在控制面板中,选择“程序”类别中的卸载程序”。

  2. 在程序列表中,找到并选择 Microsoft .NET Framework 4.7,然后选择“ 卸载/更改”。

  3. 在 .NET Framework 4.7 维护向导中,从此计算机中选择 Remove.NET Framework 4.7,然后选择“下一步”。

  4. 如果出现以下警告窗口,请选择“ 继续”。

    警告窗口的屏幕截图,其中显示了卸载Microsoft .NET Framework 可能会导致某些应用程序停止运行。

  5. 等待卸载完成。

重新安装 .NET Framework 4.7

若要重新安装 Microsoft .NET Framework 4.7,请使用以下方法之一。

方法 1:手动下载并安装 .NET Framework 4.7

  1. 下载 .NET Framework 4.7 的 Web 安装程序。
  2. 安装 .NET Framework 4.7。

方法 2:使用Windows 更新安装 .NET Framework 4.7

  1. 打开Windows 更新。

  2. 选择“联机检查Windows 更新中的更新。

  3. 搜索更新完成后,选择 “可选更新可用”。

    Windows 更新面板的屏幕截图,其中显示了可用的可选更新链接。

  4. 找到并选择 Microsoft .NET Framework 4.7 for Windows 7 和 Windows Server 2008 R2,然后选择“ 确定”。

    屏幕截图显示了可选更新,其中选择了 Microsoft适用于 Windows 7 的 .NET Framework 4.7 和适用于 x64 的 Windows Server 2008 R2(KB3186497)。

  5. 等待安装完成。

暂时禁用对 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 的已知问题。