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:
- 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 actualizaciones de calidad para .NET Framework 4.6, 4.6.1 y 4.6.2 (KB 4104606) en el dispositivo.
- A continuación, instale .NET Framework 4.7 en el dispositivo.
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.
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 sobre 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 sobre 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 sobre esta actualización, vea KB 4035508.
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
En 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 para mantenimiento de .NET Framework 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.
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
- Descargue el instalador web para .NET Framework 4.7.
- Instale .NET Framework 4.7.
Método 2: Usar Windows Update para instalar .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 Opcional Novedades disponible.
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 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
- Ubicación:
Referencia
Para obtener más información sobre los problemas conocidos en .NET Framework 4.7, consulte Problemas conocidos de .NET Framework 4.7.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de