COMException desde aplicaciones WPF después de que .NET Framework 4.7 esté instalado en Windows 7 o Windows Server 2008 R2

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

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

Síntomas

Imagine la siguiente situación:

En este escenario, las aplicaciones wpf producen un error 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 .NET Framework 4.7. Como alternativa, deshabilite temporalmente el componente táctil de WPF afectado.

Desinstalación de .NET Framework 4.7

  1. En 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 para mantenimiento de .NET Framework 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 cómo desinstalar Microsoft .NET Framework puede hacer que algunas aplicaciones dejen de funcionar.

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

Reinstalación de .NET Framework 4.7

Para volver a instalar Microsoft .NET Framework 4.7, use uno de los métodos siguientes.

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

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

Método 2: Usar Windows Update para instalar .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 Opcional Novedades disponible.

    Captura de pantalla del panel Windows Update, en la que se muestra el vínculo de 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.

    Captura de pantalla que muestra las actualizaciones opcionales, donde se selecciona Microsoft .NET Framework 4.7 para Windows 7 y Windows Server 2008 R2 para x64 (KB3186497).

  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 con lápiz óptico, use uno de los métodos siguientes.

  • Agregue la siguiente entrada a la configuración de la aplicación para deshabilitar la compatibilidad táctil y con lápiz para las 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 con lápiz para aplicaciones wpf globales.

    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 solucionar. 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 sobre los problemas conocidos en .NET Framework 4.7, consulte Problemas conocidos de .NET Framework 4.7.