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.
Windows 7 SP1 y Windows Server 2008 R2 SP1
Descargue el paquete independiente del catálogo de Microsoft Update. Para obtener más información acerca de esta actualización, vea KB 4035510.
Windows 8.1 and Windows Server 2012 R2
Descargue el paquete independiente del catálogo de Microsoft Update. Para obtener más información acerca de esta actualización, vea KB 4035509.
Windows Server 2012
Descargue el paquete independiente del catálogo de Microsoft Update. Para obtener más información acerca de esta actualización, vea KB 4035508.
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
En el Panel de control, seleccione Desinstalar un programa en la categoría Programas.
En la lista de programas, busque y seleccione Microsoft .NET Framework 4.7 y, a continuación, seleccione Desinstalar o cambiar.
En el asistente .NET Framework mantenimiento 4.7, seleccione Remove.NET Framework 4.7 en este equipo y, a continuación, seleccione Siguiente.
Si aparece la siguiente ventana de advertencia, seleccione Continuar.
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
- Descargue el instalador web para la .NET Framework 4.7.
- Instale el .NET Framework 4.7.
Método 2: Usar Windows Update para instalar el .NET Framework 4.7
Abra Windows update.
Seleccione Comprobar en línea las actualizaciones de Windows Update.
Una vez completada la búsqueda de actualizaciones, seleccione Actualizaciones opcionales disponibles.
Busque y seleccione Microsoft .NET Framework 4.7 para Windows 7 y Windows Server 2008 R2 y, a continuación, seleccione Aceptar.
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
- Ubicación:
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.