Compatibilidad de Aplicaciones con Windows 7 Windows 7 SuperHero Technical Readiness<br />Michał Morciniec , micham@micros...
Windows 7 Comparte Base con Windows Vistase mantiene la inversión en Windows Vista<br />Pocos cambios:  la mayoría de soft...
Etapas de Compatibilidad de Aplicaciones con SS.OO.<br /><ul><li>Diseño</li></ul>	conocimiento de problemáticas de SS.OO.<...
Cambios: Vista -&gt; Windows 7<br />Windows Vista es muy compatible con Windows 7 pero se han introducido cambios en:<br /...
Cambios: XP-&gt;Windows 7<br /><ul><li>Programas diseñados para XP serán impactados por nuevo modelo de seguridad de Windo...
UserAccount Control (UAC) – medidas de seguridad y protección de SS.OO.
Aislamiento de Servicios
Virtualización de registro y sistema de ficheros</li></ul>Además<br /><ul><li>Todos los cambios Vista->Windows 7 </li></li...
Vista, XP - Windows 7<br />Cambio de Versión de Sistema Operativo<br />
Números de Versión de SS.OO. Windows<br />
Versión de Sistema Operativo<br />Número de Versión Interno de Windows 7 es 6.1. <br />dwMajorVersion igual como en Vista<...
Porque Versión 6.1?<br />Muchas aplicaciones solo comprueban dwMajorVersion – Compatibilidad con Vista<br />Algunas aplica...
Mejores Prácticas para Comprobaciones de Versión de SS.OO<br />No hacer comprobaciones para igualdad (=)<br />Comprobar pa...
XP - Windows 7<br />UAC<br />
Tipos de Cuentas de Usuario<br />Built-in (local machine) Administrator<br />Deshabilitado por defecto<br />Ejecuta con “F...
Control de Cuenta de Usuario (UAC)– Why?<br /><ul><li>Aplicaciones ejecutan como Standard User por defecto
Que puede hacer Standard User?</li></ul>No Permitido<br /><ul><li>Instalar aplicaciones
Cambiar componentes de SS.OO
Cambiar configuración de máquina (machine settings)
Privilegios de administrador</li></ul>Permitido<br /><ul><li> Ejecutar la mayoría de aplicaciones
 Cambiar configuración de usuario </li></ul>	(per usersettings)<br />
Abby<br />UAC -Arquitectura<br />Admin Token<br />Admin Token<br />App<br />Child App<br />Admin Token<br />Standard User ...
Token Partido (“Split-Token”)<br />Tiene menos privilegios la mayoría del tiempo<br />Permite “elevar” proceso para conseg...
Token “partido”<br />demo<br />
Dialogo de Consentimiento (“Consent UI”)<br />Componente de SS.OO.<br />Aplicación sin Firma<br />Aplicación Firmada<br />
Dialogo de Credencial (“Over The Shoulder”)<br />
Control de Configuración de Windows 7 UAC<br />Configuración:<br />Como en Vista<br />Excluye binarios de SS.OO.<br />Como...
Windows 7 UAC y “Auto-Elevation”<br />Configuración 2 y 3 hace uso de “auto elevación”<br />Binarios firnados con Windows ...
UAC y Política de Seguridad (W7 y Vista)<br />Cierta funcionalidad de UAC puede ser controlada con Políticas de Seguridad<...
XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />
Objetivo del Interfaz de Usuario: Sencillo y Predecible<br />1	Diseña la aplicación para “Standard User”<br />2	Claramente...
Interfaz de Usuario: Escudo<br />Se adjunta a los controles para indicar “elevación” es imprescindible para utilizar la fu...
Ejemplo de Uso del Escudo<br />
XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />
Mandatory Integrity Control (MIC)<br />Modelo tradicional de seguridad desde NT se basa en el “token” del proceso<br />Win...
MIC y Recursos<br />Niveles MIC aplican a:<br />Procesos<br />Objetos<br />Componentes COM<br />Servicios<br />Sistema de ...
Resumen MIC Simplificado<br />Objetos pueden tener Nivel MIC<br />Almacenado en el descriptor de seguridad (Security Descr...
MIC en más Detalle - Politicas<br />Cada objeto securizable tiene Nivel y Política MIC<br />Tipos de Políticas:<br />“No-W...
MIC y Pruebas de Acceso<br />Nivel de Proceso y típo de accesso solicitado se comprueban con Nivel del Objeto<br />If Nive...
Ejemplo de Comprobación de Acceso con MIC<br />R+W<br />Request Access:<br />Read + Write<br />Internet Explorer<br />[LOW...
MIC<br />demo<br />
User Interface Privilege Isolation (UIPI)<br />UIPI- proceso con Nivel MIC más bajo no puede<br />Validar “windowhandle” c...
XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />Virtualización<br />
Virtualización de Sistema de Ficheros y Claves de Registro<br />Facilita compatibilidad de aplicaciones “legacy”<br />No h...
Virtualización de Sistema de Ficheros y de Registro<br />Virtualización de Claves de Registro NO FUNCIONA<br />Para proces...
Virtualización y Windows Explorer<br />
Virtualización<br />demo<br />
XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />Virtualización<br />WRP<br />
WRP (Windows ResourceProtection)<br />Mecanismo general que protege ciertos recursos de SS.OO.,  e.g. Windowssystem32kerne...
XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />Virtualización<br />WRP<br />Ubicación de Carpet...
Ubicación de Carpetas<br />Datos de Usuario se almacenan en : Usersusername%<br />Carpetas Pictures, Music, Documents, Des...
Dónde Debería Almacenar mis Datos?<br />ConstantesSHGetKnownFolderPath<br />See:<br />Where Should I Write Program Data In...
Mejores Prácticas para Ubicación de Carpetas<br />No utilizar rutas absolutas<br />AppVerifier incluye una prueba<br />Scr...
XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />Virtualización<br />WRP<br />Ubicación de Carpet...
Aplicaciones diseñadas para Vista /Windows 7<br />Aplicaciones diseñadas para Vista/W7 embeben un “XML manifest”<br />Elem...
Ejemplo de Manifiesto XML <br />MyAdminApp.Exe.Manifest<br />&lt;?xmlversion=&quot;1.0&quot; encoding=&quot;UTF-8&quot; st...
Comprobación/solución de Problemática UAC<br />Si haces lo siguiente…<br />Escribes a  Program Files, Windows, System32, H...
XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />Virtualización<br />Ubicación de Carpetas<br />A...
Servicios Windows y Sesión 0<br />En Windows® XP, servicios de Windows y Aplicaciones de usuarios ejecutaban conjuntamente...
Separación de Sesiones<br />Session 0 in Windows XP / Windows Server 2003<br />Session 0 / Session 1 in Windows Vista+<br />
Problemática Relacionada<br />Mensajes de Windows no pueden cruzar límites del Desktop (y por lo tanto sessión)<br />Servi...
Como mostrar Interfaz de Usuario desde Servicio Windows<br />Mecanismo de “mitigación” avisa al usuario(si el servicio es ...
Upcoming SlideShare
Loading in...5
×

Windows 7, Compatibilidad De Aplicaciones

6,354

Published on

En esta sesión presentamos temas que presentan problemas más frecuentes de compatibilidad de aplicaciones diseñadas para Windows XP en Windows 7. Explicamos porque estos problemas ocurren y como evitarles.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
6,354
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
48
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Auto-ElevationThe reason that elevation of (most) Windows executables in the two middle settings doesn&amp;apos;t result in a prompt is that the system &amp;quot;auto elevates&amp;quot; Windows executables. First, what does Windows define as a Windows executable in this context? The answer depends on several factors, but two things must hold: it must be digitally signed by the Windows publisher, which is the certificate used to sign all code included with Windows (it&amp;apos;s not sufficient to be signed by Microsoft, so Microsoft software that&amp;apos;s not shipped in Windows isn&amp;apos;t included); and it must be located in one of a handful of &amp;quot;secure&amp;quot; directories. A secure directory is one that standard users can&amp;apos;t modify and they include %SystemRoot%System32 (e.g., WindowsSystem32) and most of its subdirectories, %SystemRoot%Ehome, as well as a handful of directories under %ProgramFiles% that include Windows Defender and Windows Journal.There is also a hardcoded list of Windows executables that get the auto-elevate treatment. These Windows executables also ship external to Windows 7 and so must be able to run on down-level systems where the presence of the autoexecute property would result in an error. The list includes Migwiz.exe, the migration wizard, Pkgmgr.exe, the package manager, and Spinstall.exe, the Service Pack installer.
  • static internal void AddShieldToButton(Button b) { b.FlatStyle = FlatStyle.System; SendMessage(b.Handle, BCM_SETSHIELD, 0, 0xFFFFFFFF); }
  • The term UIPI was coined to describe the impact that MIC mechanism has in User Interface
  • http://blogs.technet.com/askperf/archive/2007/04/27/application-compatibility-session-0-isolation.aspxService IsolationMany services require access to certain objects that are available only to high-privilege accounts. For example, a service might have to write to a registry key that provides write access only to administrators. Earlier than Windows Vista, services typically gained access to such objects by running in a high-privilege account such as LocalSystem. An alternative approach was to weaken the security on the objects to allow access by services that are running in a generic lower-privilege account.Both approaches increased the risk that an attacker or malware could gain control of the system. The only way for an administrator to mitigate this risk was to create an account specifically for the service and allow access to the objects only for that account. However, this approach created manageability problems, most notably password management, because the administrator no longer had the advantages of using built-in operating system accounts.To mitigate this problem, Windows Vista introduces service isolation, which provides services a way to access specific objects without having to either run in a high-privilege account or weaken the objects&amp;apos; security protection. For example, service isolation allows an antivirus service to run in a lower-privilege account than LocalSystem, but still maintain complete access to its signature definition files or registry keys that would normally be accessible only to administrators.A service isolates an object for its exclusive use by securing the resource—such as file or registry key access—with an access control entry that contains a service security ID (SID). This ID is referred to as a per-service SID. A per-service SID is derived from the service&amp;apos;s name and is unique to that service.After a SID has been assigned to a service, the service owner can then modify the required objects&amp;apos; access control lists (ACLs) to allow access to the SID. For example, a registry key in HKEY_LOCAL_MACHINESOFTWARE would normally be accessible only to services with administrative privileges. By adding the per-service SID to the key&amp;apos;s ACL, the service can run in a lower-privilege account, but still have access to the key.Windows services commonly run in the LocalSystem account, the most powerful account on the system. This makes such services attractive targets for virus writers. Ideally, services should limit their damage potential by running in a lower-privilege account such as LocalService or NetworkService. However, many services require at least some privileges that only LocalSystem supports. The all-or-nothing model that was used earlier than Windows Vista meant that a service that required any LocalSystem privileges had to also include all other LocalSystem privileges. This often meant including privileges that the service did not require, creating an unnecessarily high damage potential.Windows Vista addresses this issue by allowing services to run with least privilege. Services are no longer restricted to the default set of privileges that are supported by a standard account. Instead, services can select an account that has the privileges that they require and then remove all other unnecessary privileges. This feature can be used for any type of service account: LocalService, NetworkService, LocalSystem, a domain, or a local account.
  • TheseserviceswillbeofferedtoPartners
  • Windows 7, Compatibilidad De Aplicaciones

    1. 1. Compatibilidad de Aplicaciones con Windows 7 Windows 7 SuperHero Technical Readiness<br />Michał Morciniec , micham@microsoft.com<br />Microsoft Ibérica<br />
    2. 2. Windows 7 Comparte Base con Windows Vistase mantiene la inversión en Windows Vista<br />Pocos cambios: la mayoría de software para Windows Vista funcionará en Windows 7 – las excepciones posibles – código de bajo nivel (AV, Cortafuegos, Aplicaciones de procesamiento de Imágenes, etc). <br />Hardware que funciona bien en Windows Vista funcionará bien en Windows 7 .<br />Windows 7<br />Pocos Cambios: Enfoque en rendimiento y estabilidad<br />Profundos Cambios: Nuevos modelos de seguridad, drivers, despliegue, y red<br />
    3. 3. Etapas de Compatibilidad de Aplicaciones con SS.OO.<br /><ul><li>Diseño</li></ul> conocimiento de problemáticas de SS.OO.<br /><ul><li> Pruebas</li></ul> ejecutar aplicación en el nuevo SS.OO.<br /> utilizar herramientas de pruebas<br /><ul><li> Remediación </li></ul> cambio de diseño del código<br /> parches de compatibilidad (shimming)<br /> Windows XP Mode en W7 <br /><ul><li> Certificación </li></ul> obtener Windows 7 Logo<br /><ul><li> Publicación</li></ul>Publicar aplicación en Windows 7 Compatibility Center <br />
    4. 4. Cambios: Vista -&gt; Windows 7<br />Windows Vista es muy compatible con Windows 7 pero se han introducido cambios en:<br />Versión de Sistema Operativo<br />Cambio en Binarios de Bajo Nivel<br />Alta Resolución de Pantalla (DPI)<br />Cadena de Agente de Usuario en Internet Explorer 8<br />Otras Regresiones:<br />Eliminación de Windows Mail<br />Eliminación de Windows MovieMaker<br />NationalLanguageSupport (NLS) – Cambio del Orden<br />Eliminación de Reflexión de Registro Windows<br />Eliminación de Driver WPDUSB.SYS para Windows Portable Devices<br />Microsoft MessageQueuing (MSMQ) - SHA-2 es un algoritmo por defecto para el calculo de Hash<br />4<br />
    5. 5. Cambios: XP-&gt;Windows 7<br /><ul><li>Programas diseñados para XP serán impactados por nuevo modelo de seguridad de Windows 7:
    6. 6. UserAccount Control (UAC) – medidas de seguridad y protección de SS.OO.
    7. 7. Aislamiento de Servicios
    8. 8. Virtualización de registro y sistema de ficheros</li></ul>Además<br /><ul><li>Todos los cambios Vista->Windows 7 </li></li></ul><li>Aplicación Incompatible con Windows 7<br />demo<br />
    9. 9. Vista, XP - Windows 7<br />Cambio de Versión de Sistema Operativo<br />
    10. 10. Números de Versión de SS.OO. Windows<br />
    11. 11. Versión de Sistema Operativo<br />Número de Versión Interno de Windows 7 es 6.1. <br />dwMajorVersion igual como en Vista<br />dwMinorVersion es diferente<br />Problema<br />Cualquier aplicación que comprueba el número de versión obtiene valor más alto que quizás no puede procesar.<br />Instaladores de Aplicaciones pueden fallar <br />Lógica de aplicación puede prevenir el arranque de la misma. <br />Sugerencia de Solución<br />Comprueba funcionalidad en vez de versión<br />Aplique Parche de Compatibilidad “version lie” ( layer o shim)<br />Compara para SS.OO. posteriores (&gt;) a la versión compatible<br />9<br />
    12. 12. Porque Versión 6.1?<br />Muchas aplicaciones solo comprueban dwMajorVersion – Compatibilidad con Vista<br />Algunas aplicaciones han intentado la comprobación pero la han implementado INCORRECTAMENTE:<br />if (majorVersion &gt;= 5 && minorVersion &gt;= 1)<br />
    13. 13. Mejores Prácticas para Comprobaciones de Versión de SS.OO<br />No hacer comprobaciones para igualdad (=)<br />Comprobar para versión XP o posterior (&gt;=5.1)<br />Comprobar funcionalidad en vez de versión<br />Seguir ejemplos de código (managed/C++) de <br />Windows 7 Training Kit forDeveloper<br />Puede haber excepciones – certificación para versión de SS.OO determinada<br />
    14. 14. XP - Windows 7<br />UAC<br />
    15. 15. Tipos de Cuentas de Usuario<br />Built-in (local machine) Administrator<br />Deshabilitado por defecto<br />Ejecuta con “Full token” de Administrador<br />ProtectedAdministrator<br />Usuario en grupo de Administradores <br />Ejecuta con “Split token”<br />Standard UserorLimitedUserAccount<br />Ninguno de los previamente mencionados<br />No tiene privilegios administrativos<br />13<br />
    16. 16. Control de Cuenta de Usuario (UAC)– Why?<br /><ul><li>Aplicaciones ejecutan como Standard User por defecto
    17. 17. Que puede hacer Standard User?</li></ul>No Permitido<br /><ul><li>Instalar aplicaciones
    18. 18. Cambiar componentes de SS.OO
    19. 19. Cambiar configuración de máquina (machine settings)
    20. 20. Privilegios de administrador</li></ul>Permitido<br /><ul><li> Ejecutar la mayoría de aplicaciones
    21. 21. Cambiar configuración de usuario </li></ul> (per usersettings)<br />
    22. 22. Abby<br />UAC -Arquitectura<br />Admin Token<br />Admin Token<br />App<br />Child App<br />Admin Token<br />Standard User Token<br />“Standard User” Token<br />Standard User Token<br />App<br />Child App<br />Standard User Token<br />
    23. 23. Token Partido (“Split-Token”)<br />Tiene menos privilegios la mayoría del tiempo<br />Permite “elevar” proceso para conseguir privilegios cuando son necesarios<br />Aplica a logons interactivos <br />
    24. 24. Token “partido”<br />demo<br />
    25. 25. Dialogo de Consentimiento (“Consent UI”)<br />Componente de SS.OO.<br />Aplicación sin Firma<br />Aplicación Firmada<br />
    26. 26. Dialogo de Credencial (“Over The Shoulder”)<br />
    27. 27. Control de Configuración de Windows 7 UAC<br />Configuración:<br />Como en Vista<br />Excluye binarios de SS.OO.<br />Como 2 + control aparece en Escritorio del Usuario<br />UAC deshabilitado<br />20<br />
    28. 28. Windows 7 UAC y “Auto-Elevation”<br />Configuración 2 y 3 hace uso de “auto elevación”<br />Binarios firnados con Windows Publishing Certificate<br />En ubicación “segura”<br />%SystemRoot%System32 <br />Algunas subcarpetas de %ProgramFiles% (Windows Defender, Windows Journal)<br />Un Listado “especial” de ejecutables (Pkgmgr.exe, Migwiz.exe)<br />21<br />
    29. 29. UAC y Política de Seguridad (W7 y Vista)<br />Cierta funcionalidad de UAC puede ser controlada con Políticas de Seguridad<br />Si Diálogos de UAC se muestran para Admins/Standard Users<br />Si funciona heurística de detección de Instalador<br />Si Diálogos de UAC aparecerán en Escritorio Seguro <br />Virtualización de Registro y Sistema de Ficheros <br />Ex. : Deshabilitar Diálogo OTC para Usuario Estandard<br /> (las peticiones de “elevación será automáticamente denegadas)<br />22<br />
    30. 30. XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />
    31. 31. Objetivo del Interfaz de Usuario: Sencillo y Predecible<br />1 Diseña la aplicación para “Standard User”<br />2 Claramente identifica tareas administrativas<br />Asegura que usuarios estándar puedes ser productivos<br />Identifica las tareas administrativas con “shield” <br />
    32. 32. Interfaz de Usuario: Escudo<br />Se adjunta a los controles para indicar “elevación” es imprescindible para utilizar la funcionalidad<br />No tiene estado ( “hover”, “disabled” etc.)<br />No memoriza/causa “elevación” de proceso<br />Programada mediante:<br />IDI_SHIELD recurso de icono<br />BCM_SETSHIELD mensaje de Windows para botones<br />Másinformación:<br />Enabling UAC Elevation in .Net applications<br />
    33. 33. Ejemplo de Uso del Escudo<br />
    34. 34. XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />
    35. 35. Mandatory Integrity Control (MIC)<br />Modelo tradicional de seguridad desde NT se basa en el “token” del proceso<br />Windows Vista/Win7 mejora seguridad con MIC:<br />Cada proceso tiene “nivel MIC”<br />Todos los recursos de SS.OO tienen “nivel MIC” (“Medium” por defecto)<br />Los cuatro niveles:<br />0: Low (IE with Protected Mode On)<br />1: Medium (Standard User) <br />2: High (Elevated User)<br />3: System (System Services)<br />
    36. 36. MIC y Recursos<br />Niveles MIC aplican a:<br />Procesos<br />Objetos<br />Componentes COM<br />Servicios<br />Sistema de ficheros<br />Claves de registro<br />Para visualizar nivel MIC utiliza “accesschk –i” (Sysinternals)<br />IE actualmente es la única aplicación con Nivel MIC Bajo<br />Todos los recursos de IE también tienen Nivel Bajo<br />
    37. 37. Resumen MIC Simplificado<br />Objetos pueden tener Nivel MIC<br />Almacenado en el descriptor de seguridad (Security Descriptor)<br />Procesos ejecutan con cierto Nivel MIC (IL – IntegrityLevel)<br />Almacenado en el “token” de acceso (Access Token)<br />Un proceso no puede acceder al objeto si su Nivel MIC &lt; Nivel MIC del objeto<br />Forma parte de comprobación del acceso<br />
    38. 38. MIC en más Detalle - Politicas<br />Cada objeto securizable tiene Nivel y Política MIC<br />Tipos de Políticas:<br />“No-Write-Up”: Nivel más bajo no puede escribir al objeto<br />“No-Read-Up”: Nivel más bajo no puede leer el objeto<br />“No-Execute-Up”: Nivel más bajo no puede ejecutar el objeto<br />Niveles no especificados = “Medium” + “No-Write-Up”<br />Procesos son “No-Write-Up” + “No-Read-Up”<br />
    39. 39. MIC y Pruebas de Acceso<br />Nivel de Proceso y típo de accesso solicitado se comprueban con Nivel del Objeto<br />If Nivel de Proceso &gt;= Nivel de Objeto, realiza prueba DACL (access control list)<br />If Nivel de Proceso &lt; Nivel de Objeto ENTONCES<br />Y política de objeto es…<br />Si el tipo de acceso solicitado incluye<br />
    40. 40. Ejemplo de Comprobación de Acceso con MIC<br />R+W<br />Request Access:<br />Read + Write<br />Internet Explorer<br />[LOW IL]<br />Toby’s <br />Startup <br />Folder<br />Medium (NW)<br />Request Access:<br />Read + Write<br />MS Money<br />[Medium IL]<br />
    41. 41. MIC<br />demo<br />
    42. 42. User Interface Privilege Isolation (UIPI)<br />UIPI- proceso con Nivel MIC más bajo no puede<br />Validar “windowhandle” creado por el proceso con nivel más alto<br />Hacer llamadas SendMessage o PostMessage a las ventanas creadas por el proceso con nivel más alto<br />Utilizar “threadhooks” para attachar a los procesos más privilegiados<br />Utilizar “journalhooks” (SetWindowsHookEx) para monitorizar dichos procesos<br />Para permitir que Windows Message pasa entre Niveles distintos MIC levels utiliza<br />ChangeWindowMessageFilter(message, SGFLT_ADD);<br />o<br /> marca UIAccess=true en el manifest (vease manifiesto de osk.exe)<br />Consulta Windows 7 Training Kit for Developer para el código de ejemplo.<br />
    43. 43. XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />Virtualización<br />
    44. 44. Virtualización de Sistema de Ficheros y Claves de Registro<br />Facilita compatibilidad de aplicaciones “legacy”<br />No hay garantía de que exista en futuros SS.OO.<br />Funciona con aplicaciones interactivas de 32-bit (no “elevadas” acceden a recursos protegidos<br />Con claves/ficheros donde Admin tiene acceso<br />HKLMSoftware; <br />%SystemDrive%Program Files<br />%WinDir%System32<br />Serán redirecionados a:<br />HKCUSoftwareClassesVirtualStore<br />%LocalAppData%VirtualStore<br />Virtualización elimina necesidad de “elevar”<br />Escrituras a HKLM van a HKCU<br />Escrituras a carpetas de SS.OO re-direccionados a repositorio “per-usuario”<br />Diferente de redirección de registro para 32-bit en máquinas x64, (WOW64…)<br />
    45. 45. Virtualización de Sistema de Ficheros y de Registro<br />Virtualización de Claves de Registro NO FUNCIONA<br />Para procesos 64 bits<br />Procesos que impersonan usuarios<br />Procesos que especifican requestedExecutionLevel en sus manifiestos<br />Procesos no interactivos (servicios Windows)<br />Virtualización de ficheros no funciona para ejecutables<br />aspx, .bin,.cmd,.exe, .hlp, .msi, .ocx, .sys, .tlb, .wsh<br />
    46. 46. Virtualización y Windows Explorer<br />
    47. 47. Virtualización<br />demo<br />
    48. 48. XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />Virtualización<br />WRP<br />
    49. 49. WRP (Windows ResourceProtection)<br />Mecanismo general que protege ciertos recursos de SS.OO., e.g. Windowssystem32kernel32.dll<br />NT SERVICETrustedInstaller tiene Full Access <br />SfcIsFileProtected() permite detectar clave de registro protegida por WRP<br />SfcIsFileProtected() permite detectar fichero protegido por WRP<br />Windows Module Installer (TrustedInstaller.exe) es utilizado para actualizar componentes de SS.OO.<br />ISV no disponen del interfaz para interactuar con el<br />Local Administrator puede tomar “ownership” del recurso protegido eliminando WRP<br />WRP no es medida de seguridad<br />Aplicaciones /Instaladores<br />No deberían modificar recursos protegidos por WRP.<br />
    50. 50. XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />Virtualización<br />WRP<br />Ubicación de Carpetas<br />
    51. 51. Ubicación de Carpetas<br />Datos de Usuario se almacenan en : Usersusername%<br />Carpetas Pictures, Music, Documents, Desktop, y Favorites están debajo<br />Prefijo “My“ eliminado (en Windows 7 Explorerlo muestra…)<br />“AllUsers”  “Public” o “ProgramData”<br />
    52. 52. Dónde Debería Almacenar mis Datos?<br />ConstantesSHGetKnownFolderPath<br />See:<br />Where Should I Write Program Data Instead of Program Files?<br />
    53. 53. Mejores Prácticas para Ubicación de Carpetas<br />No utilizar rutas absolutas<br />AppVerifier incluye una prueba<br />Script: utilizar variables de entorno<br />Código “Unmanaged” (C, C++)<br />ShGetFolderPathfunction (CLSID_...)<br />SHGetKnownFolderPath (FOLDERID_...)<br />Código “Managed” (C#, VB.NET)<br />System.Environment.GetFolderPath() <br />Microsoft.VisualBasic.FileIO.SpecialDirectories<br />My.Computer.FileSystem.SpecialDirectories<br />
    54. 54. XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />Virtualización<br />WRP<br />Ubicación de Carpetas<br />Manifiesto de Aplicación<br />
    55. 55. Aplicaciones diseñadas para Vista /Windows 7<br />Aplicaciones diseñadas para Vista/W7 embeben un “XML manifest”<br />Elemento estándar de Proyecto de VS 2008<br />Deshabilita “mitigaciones” como Virtualización<br />Manifiesto declara RequestedExecutionLevel:<br />
    56. 56. Ejemplo de Manifiesto XML <br />MyAdminApp.Exe.Manifest<br />&lt;?xmlversion=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;<br />&lt;assemblyxmlns=&quot;urn:schemas-microsoft-com:asm.v1&quot; manifestVersion=&quot;1.0&quot;&gt;<br /> &lt;assemblyIdentityversion=&quot;1.0.0.0&quot; processorArchitecture=&quot;X86&quot;name=&quot;MyAdminApp&quot; type=&quot;win32&quot;/&gt;<br /> &lt;!-- Identify the application security requirements. --&gt;<br /> &lt;trustInfoxmlns=&quot;urn:schemas-microsoft-com:asm.v3&quot;&gt;<br /> &lt;security&gt;<br /> &lt;requestedPrivileges&gt;<br /> &lt;requestedExecutionLevellevel=&quot;requireAdministrator“<br /> uiAccess=“false&quot;/&gt;<br /> &lt;/requestedPrivileges&gt;<br /> &lt;/security&gt;<br /> &lt;/trustInfo&gt;<br />&lt;/assembly&gt;<br />
    57. 57. Comprobación/solución de Problemática UAC<br />Si haces lo siguiente…<br />Escribes a Program Files, Windows, System32, HKLM/Software, o Root (c:)?<br />Creas objetos “globalmente” (a nivel de sistema)<br />Utilizas Mensajes Windows entre Niveles MIC distintos de procesos <br />Haz una prueba<br />Ejecuta la aplicación como Admin<br />Prueba la aplicación con UAC deshabilitado<br />Herramientas de utilizad<br />Process Monitor<br />Standard User Analyzer<br />
    58. 58. XP - Windows 7<br />UAC<br />Interfaz de Usuario -UI Shield<br />MIC<br />Virtualización<br />Ubicación de Carpetas<br />Aislamiento de Servicios Windows (Session 0)<br />
    59. 59. Servicios Windows y Sesión 0<br />En Windows® XP, servicios de Windows y Aplicaciones de usuarios ejecutaban conjuntamente en Sesión 0.<br />Desde Windows Vista®, servicios Windows están aislados en Sesión 0<br />Aplicaciones de usuarios ejecutan en Sesión 1, Sesión 2, etc. <br />(“fastuserswitching” y Terminal Services)<br />
    60. 60. Separación de Sesiones<br />Session 0 in Windows XP / Windows Server 2003<br />Session 0 / Session 1 in Windows Vista+<br />
    61. 61. Problemática Relacionada<br />Mensajes de Windows no pueden cruzar límites del Desktop (y por lo tanto sessión)<br />Servicios Windows no pueden mostrar Interfaz de Usuario en el Desktop de Usuario(está en la sesión distinta!)<br />Control de acceso (MIC) añade complejidad a posibles soluciones.<br />
    62. 62. Como mostrar Interfaz de Usuario desde Servicio Windows<br />Mecanismo de “mitigación” avisa al usuario(si el servicio es “interactivo”)<br /><ul><li>InteractiveServiceDetectionService (parado por defecto)
    63. 63. Inconveniente para Usuario</li></ul>Para mensajes simples <br /><ul><li>utiliza TS API WTSSendMessage</li></ul>Para lanzar Interfaz Complejo<br /><ul><li>utiliza CreateProcessAsUser</li></li></ul><li>Aislamiento de Servicios Windows<br />demo<br />
    64. 64. Recursos para Partners<br />ACF<br />Recursos de Ayuda en temas de Compatibilidad<br />Curso de formación para Partners<br />Otros recursos<br />
    65. 65. ApplicationCompatibilityFactory (ACF)<br />5 Partners ya formados<br />Tienen conocimiento profundo en pruebas de compatibilidad<br />Contacto: Wipro, Infosys, TCS (Tata), Satyam, HP, Sogeti<br />http://technet.microsoft.com/en-us/windows/bb510132.aspx<br />ACF Training Site<br />Material de formación para Partners que quieren participar en ACF<br />ACT 5.5 + Documentación+ Webcasts + Presentaciones<br />58<br />
    66. 66. Application Compatibility – Formación para Partners<br />Programa de formación de 12 horas en inglés a nivel 300 que incluye<br />UAC Overview<br />Advanced UAC and Windows ResourceProtection<br />IE in ProtectedMode<br />Versioning, Folder Locations, Session 0 Isolation<br />ACT 5.5 Internals<br />Shims and CompatibilityAdministration<br />LUA Tools and Solutions<br />Sysinternals Tools and IE Compatibility Test Tool<br />Exam<br />59<br />
    67. 67. Ayuda en Resolución de Problemas de Compatiblidad de Aplicaciónes<br />Partner Online Technical Communities (OTC)<br />Windows 7 Application Compatibility OTC<br />https://partner.microsoft.com/US/40014662<br />Primera respuesta en 8 horas<br />Disponible en Castellano <br />Foros de Discusión Públicos<br />MSDN Application Compatibilityfor Windows Development<br />Technet Windows 7 Application CompatibilityForum<br />W7 ISV RemediationWorkshops DPE<br />Aplica en https://www.isvappcompat.com/Default.aspx<br />Evento presencial 2-3 días <br />Se puede traer la aplicación para remediarla <br />60<br />
    68. 68. Ejemplos de código - Windows 7 Training Kit forDevelopers<br />Developer Kit contiene laboratorios “hands-on”+ ejemplos de código (managed /unmanaged) sobre siguiente problemática<br />OS VersionChecks<br />Session 0 Isolation<br />User Interface ProcessIsolation (MIC)<br />InstallerDetection<br />High DPI<br />Data Redirection(File and RegistryVirtualization)<br />61<br />
    69. 69. Otros Recursos Públicos<br />Cookbooks – detallanproblemas de compatibilidad<br />“Application Compatibility Cookbook”<br />“Windows 7 Application Quality Cookbook” <br />MSDN Application Compatibility: http://msdn.microsoft.com/en-us/windows/aa904987.aspx<br />TechNet Windows Application Compatibility: http://technet.microsoft.com/en-us/desktopdeployment/bb414773.aspx<br />Sysinternalshttp://technet.microsoft.com/en-us/sysinternals/bb842062.aspx<br />Developer Guides – guías de programacióngenéricas<br />Windows 7 UX Guide<br />Windows 7 Developer Guide<br />62<br />
    70. 70. Contacto:<br />micham@microsoft.com<br />Tel. 902 197 198<br />sptas@microsoft.com<br />(buzón de serviciopara Partners)<br />
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×