COMException de aplicaciones WPF después de .NET Framework 4.7 se instala en Windows 7 o Windows Server 2008 R2

Este artículo le ayuda a resolver el problema donde se produce en System.Runtime.InteropServices.COMException Windows Presentation Framework (WPF).

Versión del producto original:   .NET Framework 4.7, Windows 7 Service Pack 1, Windows Server 2008 R2 Service Pack 1
Número KB original:   4033488

Síntomas

Imagine la siguiente situación:

  • Tiene un dispositivo táctil que ejecuta Microsoft Windows 7 Service Pack 1 (SP1) o Windows Server 2008 R2 SP1.
  • Algunas aplicaciones WPF se ejecutan en el dispositivo.
  • Instale la versión preliminar de mayo de 2017 del paquete acumulativo de calidad para .NET Framework 4.6, 4.6.1 y 4.6.2 (KB 4104606) en el dispositivo.
  • Después, instalas la .NET Framework 4.7 en el dispositivo.

En este escenario, las aplicaciones WPF fallan y generan mensajes de error:

Tipo de excepción: System.TypeInitializationException
Mensaje: inicializador de tipo para 'MS. Win32.Penimc.UnsafeNativeMethods' produjo una excepción.
InnerException: System.Runtime.InteropServices.COMException
Mensaje de la excepción interna: Clase no registrada (Excepción de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))

Solución

Para resolver este problema, instale la actualización del 25 de julio de 2017 para .NET Framework 4.6, 4.6.1, 4.6.2 y 4.7 desde el Catálogo de Microsoft Update.

Solución alternativa

Para solucionar este problema, desinstale y vuelva a instalar el .NET Framework 4.7. Como alternativa, deshabilite temporalmente el componente táctil WPF afectado.

Desinstalar el .NET Framework 4.7

  1. En el Panel de control, seleccione Desinstalar un programa en la categoría Programas.

  2. En la lista de programas, busque y seleccione Microsoft .NET Framework 4.7 y, a continuación, seleccione Desinstalar o cambiar.

  3. En el asistente .NET Framework mantenimiento 4.7, seleccione Remove.NET Framework 4.7 en este equipo y, a continuación, seleccione Siguiente.

  4. Si aparece la siguiente ventana de advertencia, seleccione Continuar.

    Captura de pantalla de la ventana de advertencia, que muestra la desinstalación de Microsoft .NET Framework puede hacer que algunas aplicaciones dejen de funcionar.

  5. Espere a que se complete la desinstalación.

Reinstalar el .NET Framework 4.7

Para reinstalar Microsoft .NET Framework 4.7, use uno de los métodos siguientes.

Método 1: Descargar e instalar manualmente el .NET Framework 4.7

  1. Descargue el instalador web para la .NET Framework 4.7.
  2. Instale el .NET Framework 4.7.

Método 2: Usar Windows Update para instalar el .NET Framework 4.7

  1. Abra Windows update.

  2. Seleccione Comprobar en línea las actualizaciones de Windows Update.

  3. Una vez completada la búsqueda de actualizaciones, seleccione Actualizaciones opcionales disponibles.

    Captura de pantalla del panel Windows actualización, que muestra el vínculo de las actualizaciones opcionales disponibles.

  4. Busque y seleccione Microsoft .NET Framework 4.7 para Windows 7 y Windows Server 2008 R2 y, a continuación, seleccione Aceptar.

    La captura de pantalla muestra las actualizaciones opcionales, donde Microsoft .NET Framework 4.7 para Windows 7 y Windows Server 2008 R2 para x64 (KB3186497) está seleccionado.

  5. Espere a que termine la instalación.

Deshabilitar temporalmente la compatibilidad táctil y de lápiz para aplicaciones WPF

Para deshabilitar temporalmente la compatibilidad táctil y de lápiz, use uno de los siguientes métodos.

  • Agregue la siguiente entrada a la configuración de la aplicación para deshabilitar la compatibilidad táctil y de lápiz para aplicaciones WPF.

    <runtime>
        <AppContextSwitchOverrides value=" Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport=true"/>
    </runtime>
    
  • Aplique la siguiente subclave del Registro para deshabilitar la compatibilidad táctil y de lápiz para aplicaciones WPF machine-global.

    Advertencia

    Es posible que se produzcan problemas graves si modifica el Registro de forma incorrecta mediante el Editor del Registro u otro método. Estos problemas pueden requerir la reinstalación del sistema operativo. Microsoft no puede garantizar que estos problemas se puedan resolver. Modifique el Registro bajo su propia responsabilidad.

    • Ubicación: HKEY_LOCAL_MACHINE\Software\[Wow6432Node\]Microsoft\.NETFramework\AppContext\Switch.System.Windows.Input.Stylus
    • Nombre: DisableStylusAndTouchSupport
    • Tipo: String
    • Valor: true

Referencia

Para obtener más información acerca de los problemas conocidos en el .NET Framework 4.7, vea Problemas conocidos para .NET Framework 4.7.