Aplicación de revisiones de software para juegos en Windows XP, Windows Vista y Windows 7
Windows Vista y Windows 7 tienen una serie de características para que el sistema operativo sea más seguro. La seguridad agregada significa que aplicar revisiones al software no es tan simple como estaba en el pasado. En este artículo se examinan algunos métodos de aplicación de revisiones que funcionarán bien en Windows Vista y Windows 7, así como en Windows XP.
Hay dos categorías principales de juegos que requieren revisiones:
- Juegos que solo requieren revisiones ocasionales, como la mayoría de los juegos sin conexión.
- Juegos que requieren parches frecuentes, como la mayoría de los juegos en línea.
En este artículo también se ofrece una breve introducción al Control de cuentas de usuario (UAC) para servir como antecedentes sobre los derechos que los desarrolladores pueden esperar que los usuarios tengan en Windows Vista y Windows 7.
- Control de cuentas de usuario
- Juegos que solo requieren revisiones ocasionales
- Juegos que requieren revisiones frecuentes
- Resumen
Control de cuentas de usuario
Windows Vista y Windows 7 tienen dos tipos principales de cuentas de usuario: Usuario estándar y Administrador. Una cuenta de usuario estándar tiene varias restricciones de acceso; por ejemplo, no puede escribir datos en el sistema de archivos en %SystemDrive%\Archivos de programa ni en el registro del HKEY_LOCAL_MACHINE. Esto tiene implicaciones para aplicar revisiones a un juego si está instalado en una ubicación de solo lectura. A diferencia de Windows XP, la cuenta de usuario estándar es mucho más común en Windows Vista y Windows 7. Las cuentas de usuario estándar también son necesarias para características importantes del sistema operativo, como los controles parentales. Los controles parentales requieren que la cuenta infantil sea usuario estándar y elevar dicha cuenta al administrador para incluso un juego impide que los controles parentales trabajen con todos los demás juegos. Por lo tanto, es importante que los juegos estén diseñados para el usuario estándar.
Windows Vista y Windows 7 tienen un modelo más reciente para los derechos de usuario, para ayudar a evitar que los usuarios ejecuten programas que intenten realizar operaciones que el usuario no pretende ni autoriza. Para ello, el Control de cuentas de usuario (anteriormente denominado Cuenta de usuario con privilegios mínimos o LUA) permite a los usuarios operar el equipo con derechos de bajo nivel la mayor parte del tiempo, a la vez que pueden ejecutar fácilmente aplicaciones que requieren derechos de nivel superior, cuando sea necesario. Esto significa que las cuentas de usuario estándar y las cuentas de administrador ejecutan aplicaciones con derechos de usuario estándar, pero solo las cuentas de administrador tienen la capacidad de conceder derechos elevados a las aplicaciones. El sistema operativo pide a los usuarios que tengan cuentas de administrador el consentimiento explícito antes de ejecutar una aplicación con derechos elevados y, si un programa que requiere derechos de administrador se ejecuta en una cuenta de usuario estándar, el sistema solicita la aprobación del administrador.
Juegos que solo requieren revisiones ocasionales
Algunos juegos solo requieren algunas revisiones a lo largo de su ciclo de vida. Dos métodos que puedes emplear para esta frecuencia de aplicación de revisiones son distribuir revisiones como paquetes de Windows Installer, que por lo general no requieren derechos de administrador, o usar algún otro tipo de distribución que modifique directamente los archivos de juego.
Nota
Independientemente de si un juego requiere revisiones frecuentes, las aplicaciones normalmente requieren derechos de administrador para instalarse o quitarse.
Método 1: Usar Windows Installer para revisiones ocasionales
En este método, se usa windows Installer para instalar un paquete (archivo .msi) y se distribuye una revisión de Windows Installer (archivo .msp) para instalar revisiones. El paquete debe tener una tabla MsiPatchCertificate y la revisión debe estar firmada digitalmente por un certificado de la tabla. Puede encontrar más información sobre la firma digital en Authenticode Signing for Game Developers.
Puede encontrar más detalles y requisitos para usar este método de aplicación de revisiones en la documentación de Windows Installer:
La desventaja de este método es que si el juego no se instaló desde medios extraíbles en Windows XP, la aplicación de revisiones requiere derechos de administrador. Sin embargo, es probable que esto no sea demasiado restrictivo, ya que la mayoría de los usuarios administradores de Windows XP y la restricción al software instalado desde medios extraíbles no está presente en Windows Vista.
La principal ventaja de este método es que las revisiones se pueden aplicar mediante una cuenta de usuario estándar sin necesidad de solicitar y autenticar derechos elevados. Esto proporciona una mejor experiencia de usuario, ya que para jugar a un juego, un usuario con una cuenta de usuario estándar no necesita pedir a alguien con una cuenta de administrador que instale la revisión o que proporcione la cuenta de usuario estándar con derechos de administrador permanentes.
Es posible que este método funcione para juegos que requieren revisiones frecuentes, pero la sobrecarga del uso de paquetes de Windows Installer, en términos de integración de compilación y compatibilidad con un gran número de archivos, podría hacer que este método sea menos deseable que otros.
Método 2: Requerir derechos de administrador para aplicar revisiones
En este método, el archivo ejecutable que aplica la revisión requiere derechos de administrador para ejecutarse. Con derechos de administrador, el ejecutable de aplicación de revisiones puede modificar directamente los archivos de juego ubicados en %SystemDrive%\Archivos de programa.
La ventaja de este método es su simplicidad. Sin embargo, este método no es adecuado si el juego necesita revisiones frecuentes, ya que si un usuario con una cuenta de usuario estándar quiere jugar a un juego que requiere revisiones frecuentes, como un juego en línea masivo de varios jugadores, entonces ese usuario tiene dos opciones:
- Consigue que un administrador inicie sesión y aplique revisiones al juego, lo que podría ser inconveniente para ambas partes.
- Tener su cuenta con privilegios de administrador permanentemente elevados.
Nota
Esta última solución no solo debilita la seguridad del sistema en su conjunto, sino que impide que las características importantes, como los controles parentales, funcionen.
Al implementar este método, el archivo ejecutable que aplica la revisión debe ser diferente del ejecutable del juego. El manifiesto del ejecutable de aplicación de revisiones debe especificar requireAdministrator para requestedExecutionLevel para indicarlo como una aplicación que requiere derechos de administrador. Puede encontrar más información sobre cómo hacerlo en Procedimientos recomendados y directrices para desarrolladores para aplicaciones en un entorno con privilegios mínimos, en "Esquema de manifiesto de aplicación".
Cuando se usa este método, incluso con la configuración del manifiesto, es posible que el archivo ejecutable todavía se inicie sin derechos de administrador en dos casos:
- Si el sistema operativo es Windows XP y la cuenta del usuario es un usuario restringido.
- Si el sistema operativo es Windows Vista o Windows 7, la cuenta del usuario es un usuario estándar y UAC está deshabilitada.
Ambos son escenarios de consumidor poco frecuentes. Sin embargo, el comprobador debe tener el manifiesto que requiere derechos de administrador y debe llamar a IsUserAnAdmin; Si esta función devuelve FALSE, se muestra el mensaje de error "Se requieren derechos de administrador".
En general, el método 1 es preferible para los juegos que necesitan solo unas pocas revisiones durante su vida útil.
Juegos que requieren revisiones frecuentes
Muchos juegos basados en Internet se están mejorando continuamente, y normalmente requieren revisiones normales. Para estos juegos, las revisiones se pueden aplicar por usuario o por equipo, como se describe en los temas siguientes. Otras soluciones posibles incluyen la modificación de la ACL que protege %SystemDrive%\Archivos de programa o la creación de un servicio personalizado.
Método 3: Instalar Per-User
Un enfoque recomendado y fácil es instalar todo el juego en una subcarpeta por usuario de la carpeta de datos de la aplicación local, que puedes encontrar llamando a SHGetFolderPath con CSIDL_LOCAL_APPDATA. Una ruta de acceso de ejemplo es C:\Documents and Settings\user name\Local Settings\Application Data\ExampleGame. Esta ubicación permite que una aplicación que se ejecute con derechos de usuario estándar modifique directamente los archivos de juego.
Sin embargo, hay una desventaja en este enfoque cuando un equipo tiene varios usuarios: cada usuario tiene instalada una copia del juego, y cada usuario debe descargar y aplicar las revisiones. Esto desperdicia no solo el tiempo de los usuarios y el espacio en disco, sino que también aumenta el uso del ancho de banda de red en el servidor que proporciona revisiones. Además, dado que cualquier aplicación con derechos de usuario estándar puede modificar el juego, los ejecutables del juego están menos protegidos; es el fabricante del juego para decidir si esto es aceptable o no.
Método 4: Instalar en una ubicación de Per-Computer común
Otro método consiste en instalar los datos de juego no ejecutables en un subdirectorio de la ruta de acceso especificada por SHGetFolderPath CSIDL_COMMON_APPDATA; una ruta de acceso de ejemplo es C:\Documents and Settings\All Users\Application Data\ExampleGame. Se trata de una ubicación compartida para todos los usuarios y las aplicaciones que se ejecutan con derechos de usuario estándar pueden modificarla. Este método minimiza la necesidad de volver a aplicar revisiones grandes cuando el juego se juega desde más de una cuenta. Los archivos ejecutables para el juego deben mantenerse en %SystemDrive%\Archivos de programas para minimizar el riesgo para otras cuentas del sistema. Los archivos ejecutables deben comprobar la integridad del nuevo contenido en el directorio compartido, ya que esa ubicación puede ser modificada por un programa o persona con derechos de usuario estándar; considere la posibilidad de usar MapFileAndCheckSum para calcular una suma de comprobación de los archivos.
Este método tiene la ventaja de trabajar igualmente bien en Windows XP y Windows Vista, y no requiere derechos de administrador.
Otras posibilidades
Fuera de los métodos ya analizados, otra posibilidad es modificar la ACL de %SystemDrive%\Archivos de programa\Carpeta de juegos\ al instalar el juego para que una herramienta de aplicación de revisiones pueda escribir directamente en los archivos del juego incluso cuando se ejecuta con derechos de usuario estándar. Aunque esto no es difícil, omite la protección de seguridad que el sistema ofrece a los archivos del juego y proporciona una oportunidad para que los programas malintencionados modifiquen el contenido del directorio. Esto no es aconsejable, y se recomienda encarecidamente que se use una alternativa en su lugar.
Una última posibilidad es escribir un servicio personalizado. En general, escribir un servicio personalizado para aplicar revisiones a juegos no es una buena idea, ya que hacerlo es complicado y propenso a errores. Se recomienda que la aplicación de revisiones se realice mediante otros métodos descritos en este artículo. Sin embargo, un servicio personalizado podría ser necesario cuando se combina con soluciones anti-trampa o anti-piratería. Este servicio debe admitir un gran número de juegos y diseñarse para que solo pueda descargar los archivos de revisión y escribir solo en el directorio de instalación para el juego de destino. Es importante que el servicio sea pequeño, tenga un área expuesta mínima que sea vulnerable a ataques y use el menor número de recursos del sistema posible cuando el juego no se esté ejecutando.
Resumen
En última instancia, es necesario decidir qué método implementar. Debe ponderar los factores que son importantes para usted. La seguridad, la frecuencia de aplicación de revisiones, la facilidad de uso por parte del cliente, la carga de trabajo necesaria para implementar, la complejidad de la solución y el cumplimiento de características de la plataforma son los factores que cada desarrollador debe tener en cuenta antes de decidir sobre un método determinado.
Puedes encontrar más información sobre la protección de cuentas de usuario en Requisitos de desarrollo de aplicaciones de Windows Vista para el control de cuentas de usuario (UAC).