Live in code. Miguel E Mendoza blog.

Evaluando la compatibilidad de las aplicaciones con Windows Vista y Windows 7

Cuándo se anuncia el lanzamiento de una nueva versión de Windows, en los grupos de desarrollo de aplicaciones de todas las empresas surgen al menos dos preguntas con bastante frecuencia:

- Cómo se van a comportar mis aplicaciones en esta nueva versión?

- y qué nueva funcionalidad me puede ofrecer la nueva versión para mejorar mis aplicaciones?

El caso de Windows 7 no es la excepción, y es importante encontrar respuestas a estas preguntas rápidamente para definir una estrategia apropiada al interior de nuestras compañías.  Sin importar si nos dedicamos a hacer software a la medida, o si desarrollamos software empaquetado, tarde o temprano la necesidad de evaluar nuestras aplicaciones en esta versión de Windows va a surgir.  En este post me voy a centrar especialmente en dar algunas recomendaciones acerca de la primera pregunta, espero poder aportar algunas recomendaciones para la segunda pregunda en un artículo posterior.

El primer lugar dónde podemos empezar a buscar respuestas acerca de la compatibilidad de las aplicaciones es en MSDN.  En este sitio Microsoft ha publicado dos guías muy completas sobre las nuevas características de Windows ( Windows 7 Developer Guide:  http://code.msdn.microsoft.com/Win7DeveloperGuide/Release/ProjectReleases.aspx?ReleaseId=1702 ) y sobre las consideraciones de compatibilidad de aplicaciones con esta versión (Windows Application Compatibility:  http://msdn.microsoft.com/en-us/windows/aa904987.aspx ).

Este último en particular contiene el Application Quality Cookbook para Windows 7  http://msdn.microsoft.com/en-us/library/dd371778(VS.85).aspx y Windows Vista http://msdn.microsoft.com/en-us/library/bb757005.aspx

Uno de los primeros aspectos a evaluar sobre la compatibilidad con Windows 7 es si mi aplicación es compatible con Windows Vista.  Si ya hemos hecho esta evaluación y la hemos pasado, estamos a más de la mitad del camino para garantizar que se va a comportar bien en Windows 7.  Por esta razón es importante leer cuidadosamente ambas guías.

Si se encuentra en E.E.U.U. o en alguna área dónde exista un  MCT (Microsoft Technology Center) o se puede desplazar hasta alguno, también es recomendable que evalué la posibilidad de asistir a un Windows Readiness Lab.  Donde podrá  profundizar sobre aspectos de compatibilidad directamente con personal de Microsoft;  Desafortunadamente en el área de Latino América no existe un MCT.

Para aquellos que ya evaluaron la compatibilidad con Windows Vista hay dos aspectos claves que deben revisar sobre la compatibilidad con Windows 7:

·         En primera instancia las aplicaciones y servicios que se retiraron del sistema operativo, entre los que se encuentran por ejemplo Windows Mail o él Microsoft Agent y sus componentes o Windows Registry Reflection; en este caso si estaban siendo utilizadas dentro de sus aplicaciones se debe evaluar el mecanismo que las va a reemplazar. 

·         Por otra parte estan los cambios en los comportamientos en los servicios y componentes del sistema operativo, entre los que se destacan los cambios en MSMQ en dónde ahora por defecto todos los mensajes de salida se firman con el algoritmo SHA2 e igualmente todos los de entrada deben estar firmados para procesarlos. Otro cambio se da en el nivel de protección sobre una gran mayoría de llaves del registro, especialmente las relacionadas con el servidor COM del sistema.  En este tipo de caso se debe decidir si se puede configurar la aplicación para convivir con este comportamiento, que es la opción más recomendada  o por el contrario si se debe configurar el servicio o el componente para soportar configuraciones previas que en todos los casos va en detrimento de la seguridad y confiabilidad de Windows 7.

Si aún no se ha evaluado la compatibilidad con Windows Vista, el camino es un poco más largo e incluye una serie de aspectos más críticos por revisar.  Entre los más importantes están:

·         UAC (User Account Control), que es la manera con la que Windows Vista y Windows 7 implementan el principio del menor privilegio de cara al usuario final y a las aplicaciones.  En este caso las aplicaciones que funcionaban sin complicaciones en versiones previas, pueden sufrir problemas al intentar acceder a recursos privilegiados y este ser denegado explícita o implícitamente por el usuario.  Con UAC todos los usuarios se ejecutan como un usuario estándar, aún si pertenecen a grupos privilegiados como administradores.  Cuando una aplicación es marcada como requerida de elevación de privilegios, se le notifica al usuario para que dé el consentimiento.  En este caso la aplicación debe estar preparada para manejar apropiadamente la solicitud de recursos y el manejo en caso de no contar con ellos.

·         WRP (Windows Resource Protection ), que evita que las aplicaciones tengan acceso a recursos exclusivos del SO incluyendo archivos, carpetas y llaves del registro.  En este caso muchos recursos del sistema solamente pueden ser modificados por procesos los servicios de instalación del propio Windows.

·         IIS7, aunque Windows Vista y Windows 7 no son productos para soportar un ambiente de  producción de un sitio web, si son una excelente herramienta para desarrollar aplicaciones para Windows Server 2008. IIS7 incluye una gran cantidad de funcionalidad nueva, pero también tiene cambios importantes en el soporte a funcionalidad propia de IIS5 especialmente lo relacionado con los filtros ISAPI, el modo de aislamiento de IIS 5 y el Internet Data Connector.

·         Cuentas por defecto para los servicios y named pipes.  En Windows Vista y Windows 7 muchos de los servicios que anteriormente se ejecutaban con LocalSystem ahora se ejecutan con LocalService y con NetworkService y adicionalmente el comportamiento sobre RPC y named pipes se restringió para evitar que si un servicio se ve comprometido se pueda propagar el ataque a otros.

·         Session 0.  En versiones previas de Windows, todos los servicios se ejecutaban en lo que se llamaba la sesión cero, con la primera sesión interactiva.  En este modelo tanto servicios como aplicaciones interactivas se ejecutaban de manera conjunta.  En Windows Vista y Windows 7 la sesión cero se aisló de la primera sesión interactiva para minimizar los ataques generados por código de aplicación.

Así como estos aspectos, muchos otros como los cambios en el Network stack o como  la introducción de WFP (WindowsFiltering Platform), son importantes al evaluar aspectos que puedan evitar que las aplicaciones se comporten como lo venían haciendo en versiones previas de Windows.

 Nuevamente es importante que le revisen la documentación disponible en MSDN y evaluar el impacto de cada uno sobre las aplicaciones.

Leave a Comment

(required) 

(required) 

(optional)
 

(required) 

If you can't read this number refresh your screen
Enter the numbers above: