Control de cuentas de usuario
Nota
Esta guía de diseño se creó para Windows 7 y no se ha actualizado para las versiones más recientes de Windows. Gran parte de las instrucciones todavía se aplican en principio, pero la presentación y los ejemplos no reflejan nuestra guía de diseño actual.
Una experiencia de control de cuentas de usuario bien diseñada ayuda a evitar cambios no deseados en todo el sistema de una manera predecible y requiere un esfuerzo mínimo.
Con control de cuentas de usuario (UAC) totalmente habilitado, los administradores interactivos normalmente se ejecutan con privilegios de usuario mínimos, pero pueden elevarse automáticamente para realizar tareas administrativas al dar consentimiento explícito con la interfaz de usuario de consentimiento. Estas tareas administrativas incluyen la instalación de software y controladores, el cambio de la configuración de todo el sistema, la visualización o el cambio de otras cuentas de usuario y la ejecución de herramientas administrativas.
En su estado con privilegios mínimos, los administradores se conocen como administradores protegidos. En su estado elevado, se les conoce como administradores elevados. Por el contrario, los usuarios estándar no pueden elevarse por sí mismos, pero pueden pedir a un administrador que los eleva mediante la interfaz de usuario de credenciales. La cuenta de administrador integrada no requiere elevación.
La interfaz de usuario de consentimiento, que se usa para elevar a los administradores protegidos, tiene privilegios administrativos.
La interfaz de usuario de credenciales, que se usa para elevar a los usuarios estándar.
UAC proporciona las siguientes ventajas:
- Reduce el número de programas que se ejecutan con privilegios elevados, lo que ayuda a evitar que los usuarios cambien accidentalmente la configuración del sistema y ayuden a evitar que el "malware" obtenga acceso a todo el sistema. Cuando se deniega la elevación, el malware solo puede afectar a los datos del usuario actual. Sin elevación, el malware no puede realizar cambios en todo el sistema ni afectar a otros usuarios.
- En el caso de los entornos administrados, las experiencias de UAC bien diseñadas permiten a los usuarios ser más productivos al ejecutarse como usuarios estándar mediante la eliminación de restricciones innecesarias.
- Proporciona a los usuarios estándar la capacidad de pedir a los administradores que les conceda permiso para realizar tareas administrativas dentro de su sesión actual.
- Para entornos domésticos, permite un mejor control parental sobre los cambios en todo el sistema, incluido el software instalado.
Desarrolladores: Para obtener información sobre la implementación, consulte Rediseñar la interfaz de usuario para la compatibilidad con UAC.
En Windows Vista, los administradores protegidos pueden optar por recibir notificaciones sobre todos los cambios del sistema o ninguno. La configuración predeterminada de UAC es notificar a todos los cambios, independientemente de su origen. Cuando se le notifique, el escritorio se atenuará y deberá aprobar o denegar la solicitud en el cuadro de diálogo UAC antes de poder hacer cualquier otra cosa en el equipo. La atenuación del escritorio se conoce como escritorio seguro porque otros programas no se pueden ejecutar mientras está atenuado.
Windows 7 presenta dos configuraciones de UAC intermedias para administradores protegidos, además de las dos de Windows Vista. La primera consiste en notificar a los usuarios solo cuando un programa realiza el cambio, por lo que los administradores se elevan automáticamente cuando realizan un cambio por sí mismos. Esta es la configuración predeterminada de UAC en Windows 7 y también usa el escritorio seguro.
La segunda configuración intermedia de Windows 7 es la misma que la primera, salvo que no usa el escritorio seguro.
Windows 7 presenta dos configuraciones de UAC intermedias.
Nota: Las directrices relacionadas con la escritura de código para admitir el control de cuentas de usuario se presentan en un artículo independiente.
Conceptos de diseño
Objetivos
Una experiencia de control de cuentas de usuario bien diseñada tiene los siguientes objetivos:
- Elimine la elevación innecesaria. Los usuarios deben tener que elevarse solo para realizar tareas que requieran privilegios administrativos. Todas las demás tareas deben diseñarse para eliminar la necesidad de elevación. A menudo, el software heredado requiere privilegios de administrador innecesariamente escribiendo en las secciones del registro HKLM o HKCR, o bien en las carpetas Archivos de programa o sistema de Windows.
- Sea predecible. Los usuarios estándar deben saber qué tareas requieren que un administrador realice o no se pueda realizar en todos los entornos administrados. Los administradores deben saber qué tareas requieren elevación. Si no pueden predecir la necesidad de elevación con precisión, es más probable que den su consentimiento para las tareas administrativas cuando no deban hacerlo.
- Requerir un esfuerzo mínimo. Las tareas que requieren privilegios administrativos deben diseñarse para requerir una única elevación. Las tareas que requieren varias elevaciones se vuelven tediosas rápidamente.
- Revierta a privilegios mínimos. Una vez completada una tarea que requiere privilegios administrativos, el programa debe revertir al estado de privilegios mínimos.
Flujo de tareas de elevación
Cuando una tarea requiere elevación, tiene los pasos siguientes:
Punto de entrada. Las tareas que requieren elevación inmediata cuando UAC está totalmente habilitado tienen puntos de entrada marcados con el escudo UAC. En este caso, los usuarios deben esperar ver una interfaz de usuario de elevación inmediatamente después de hacer clic en estos comandos y deben ser más cautelosos cuando ven la interfaz de usuario de elevación de tareas que no tienen un escudo.
En este ejemplo, los elementos del panel de control de cuentas de usuario y control de cuentas parentales requieren elevación.
Cuando UAC está parcialmente habilitado o desactivado completamente, el escudo UAC todavía se muestra para indicar que la tarea implica cambios en el nivel del sistema y, por lo tanto, requiere elevación, incluso si es posible que el usuario no vea la interfaz de usuario de elevación. Mostrar siempre el escudo UAC para las tareas que requieren elevación mantiene la interfaz de usuario sencilla y predecible.
Elevación. En el caso de los administradores protegidos, la tarea solicita consentimiento mediante la interfaz de usuario de consentimiento. En el caso de los usuarios estándar, la tarea solicita credenciales de administrador mediante la interfaz de usuario de credenciales.
Estos ejemplos muestran la interfaz de usuario de credenciales y la interfaz de usuario de consentimiento.
Proceso elevado independiente. Internamente, se crea un nuevo proceso con privilegios elevados para realizar la tarea.
Revierta a privilegios mínimos. Si es necesario, revierta al privilegio mínimo para completar los pasos que no requieren elevación.
Tenga en cuenta que las tareas no "recuerden" estados elevados. Por ejemplo, si el usuario navega hacia atrás y hacia delante sobre un punto de entrada de elevación en un asistente, el usuario debe elevar cada vez.
Patrones de uso
El control de cuentas de usuario tiene varios patrones de uso (en orden de preferencia):
Trabajar para usuarios estándar. Diseñe la característica para todos los usuarios limitando su ámbito al usuario actual. Al limitar la configuración al usuario actual (en lugar de a todo el sistema), elimina la necesidad de una interfaz de usuario de Elevación por completo y permite a los usuarios completar la tarea.
Incorrecto:
En este ejemplo, los usuarios de Windows XP tenían que tener privilegios administrativos para ver o cambiar la zona horaria actual.
Correcto:
En este ejemplo, la característica de zona horaria se ha rediseñado en Windows 7 y Windows Vista para que funcione para todos los usuarios.
Tener elementos de interfaz de usuario independientes para usuarios y administradores estándar. Separe claramente las tareas de usuario estándar de las tareas administrativas. Conceder a todos los usuarios acceso a información útil de solo lectura. Identifique claramente las tareas administrativas con el escudo UAC.
En este ejemplo, el elemento del panel de control Sistema muestra su estado a todos los usuarios, pero cambiar la configuración de todo el sistema requiere elevación.
Permitir que los usuarios estándar intenten realizar la tarea y elevarse en caso de error. Si los usuarios estándar pueden ver la información y pueden realizar algunos cambios sin elevación, permitir que accedan a la interfaz de usuario y que solo tengan privilegios elevados si se produce un error en la tarea. Este enfoque es adecuado cuando los usuarios estándar tienen acceso limitado, como con propiedades de sus propios archivos en el Explorador de Windows. También es adecuado para la configuración en Panel de control páginas de centro híbrido.
En este ejemplo, el usuario intentó cambiar las propiedades del archivo de programa, pero no tenía privilegios suficientes. El usuario puede elevar e intentarlo de nuevo.
Solo funciona para administradores. Use este enfoque solo para las características y programas de administrador. Si una característica está pensada solo para los administradores (y no tiene rutas de navegación ni información útil de solo lectura para los usuarios estándar), puede solicitar las credenciales de administrador en el punto de entrada antes de mostrar cualquier interfaz de usuario. Use este enfoque para los largos asistentes y flujos de página cuando todas las rutas de acceso requieran privilegios administrativos.
Si todo el programa es solo para administradores, marcadores para solicitar credenciales de administrador para poder iniciarse. Windows muestra estos iconos de programa con la superposición de escudo UAC.
En este ejemplo, el programa requiere privilegios administrativos para iniciarse.
Instrucciones
Icono de escudo UAC
Mostrar controles con el escudo UAC para indicar que la tarea requiere elevación inmediata cuando UAC está totalmente habilitado, incluso si UAC no está totalmente habilitado. Si todas las rutas de acceso de un asistente y el flujo de página requieren elevación, muestre el escudo UAC en el punto de entrada de la tarea. El uso adecuado del escudo UAC ayuda a los usuarios a predecir cuándo se requiere elevación.
Si el programa admite varias versiones de Windows, muestre el escudo UAC si al menos una versión requiere elevación. Dado que Windows XP nunca requiere elevación, considere la posibilidad de quitar los escudos UAC para Windows XP si puede hacerlo de forma coherente y sin dañar el rendimiento.
No muestre el escudo UAC para las tareas que no requieren elevación en la mayoría de los contextos. Dado que este enfoque a veces será engañoso, el enfoque preferido es usar un comando contextual protegido correctamente en su lugar.
Dado que el comando Nueva carpeta requiere elevación solo cuando se usa en carpetas del sistema, se muestra sin un escudo UAC.
El escudo UAC se puede mostrar en los siguientes controles:
Botones de comando:
Botón de comando que requiere elevación inmediata.
Vínculos de comandos:
Vínculo de comando que requiere elevación inmediata.
Enlaces:
Vínculo que requiere elevación inmediata.
Menús:
Menú desplegable que requiere elevación inmediata.
Dado que las tareas no recuerdan estados elevados, no cambie el escudo UAC para reflejar el estado.
Muestra el escudo UAC incluso si el control de cuentas de usuario se ha desactivado o el usuario usa la cuenta de administrador integrada. Mostrar de forma coherente el escudo UAC es más fácil de programar y proporciona a los usuarios información sobre la naturaleza de la tarea.
Elevation
Siempre que sea posible, diseñe las tareas que realizarán los usuarios estándar sin elevación. Proporcionar a todos los usuarios acceso a información útil de solo lectura.
Eleva por tarea, no por cada configuración. No combine la configuración de usuario estándar con la configuración administrativa en una sola página o cuadro de diálogo. Por ejemplo, si los usuarios estándar pueden cambiar algunos pero no todos los valores, divida esa configuración como una superficie de interfaz de usuario independiente.
Incorrecto:
En este ejemplo, la configuración de usuario estándar se mezcla incorrectamente con la configuración administrativa.
Correcto:
En este ejemplo, la configuración para cambiar la fecha y la hora se encuentran en un cuadro de diálogo independiente, disponible solo para los administradores. La configuración de zona horaria está disponible para los usuarios estándar y no se mezcla con la configuración administrativa.
No considere la necesidad de elevar al determinar si se debe mostrar o deshabilitar un control. El motivo es el siguiente:
- En entornos no administrados, supongamos que los usuarios estándar podrían elevarlo pidiendo a un administrador. Deshabilitar los controles que requieren elevación impediría que los usuarios tengan privilegios elevados para los administradores.
- En entornos administrados, supongamos que los usuarios estándar no pueden elevar en absoluto. La eliminación de controles que requieren elevación impediría que los usuarios sepan cuándo dejar de buscar.
Para eliminar la elevación innecesaria:
- Si una tarea puede requerir elevación, eleve lo más tarde posible. Si una tarea necesita una confirmación, muestre la interfaz de usuario de elevación solo después de que el usuario haya confirmado. Si una tarea siempre requiere elevación, eleve en su punto de entrada.
- Una vez con privilegios elevados, permanezca elevado hasta que los privilegios elevados ya no sean necesarios. Los usuarios no deben tener que elevar varias veces para realizar una sola tarea.
- Si los usuarios deben elevar para realizar un cambio, pero no realizar ningún cambio, deje los botones de confirmación positivos habilitados, pero controle la confirmación como cancelación. Al hacerlo, los usuarios tienen que elevarse solo para cerrar una ventana.
- Incorrecto:
- En este ejemplo, el botón Guardar cambios está deshabilitado para evitar una elevación innecesaria, pero se habilita cuando los usuarios cambian la selección. Sin embargo, el botón de confirmación deshabilitado hace que parezca que los usuarios realmente no tienen una opción.
No muestre un mensaje de error cuando se produzca un error en las tareas porque los usuarios optaron por no elevar. Supongamos que los usuarios optaron intencionadamente por no continuar, por lo que no considerarán esta situación como un error.
Incorrecto:
En este ejemplo, La restauración de Fabrikam proporciona incorrectamente un mensaje de error cuando el usuario decide no elevarlo.
No muestre advertencias para explicar que es posible que los usuarios necesiten elevar sus privilegios para realizar tareas. Permitir que los usuarios descubran este hecho por sí mismos.
Muestra el escudo UAC y la interfaz de usuario de elevación en función de la tabla siguiente:
Object Circunstancia Dónde colocar el escudo UAC Cuándo se debe elevar Programa Todo el programa es solo para administradores.
Superposición de escudo UAC en el icono del programa.Muestra la interfaz de usuario de elevación en el inicio. Get-Help Todo el comando es solo para administradores.
Escudo UAC en el botón de comando o vínculo.Muestra la interfaz de usuario de elevación cuando se hace clic en el botón de comando o vínculo, pero después de cualquier confirmación. Get-Help El comando muestra información útil de solo lectura adecuada para todos los usuarios, pero los cambios requieren privilegios administrativos.
Escudo UAC en el botón de comando o vínculo para realizar cambios.Muestra la interfaz de usuario de elevación cuando se hace clic en el botón de comando, pero después de cualquier confirmación. Get-Help Los usuarios estándar pueden ver la información y, posiblemente, realizar algunos cambios sin elevación. permitir que los usuarios estándar intenten y elevar en caso de error.
No muestre el escudo UAC para el comando, pero muéstralo para el punto de entrada de elevación si se produce un error en el comando.Muestra la interfaz de usuario de elevación cuando el usuario vuelve a intentar el comando. Paso de tarea Todos los pasos posteriores requieren elevación.
Escudo UAC en el botón Siguiente (o equivalente).Muestra la interfaz de usuario de elevación cuando se hace clic en el botón Siguiente u otro botón de confirmación. Paso de tarea Algunas ramas requieren elevación.
Escudo UAC en vínculos de comandos que requieren elevación.Muestra la interfaz de usuario de elevación cuando se hace clic en los vínculos de comando con escudo UAC.
Interfaz de usuario de elevación
- Si el usuario proporciona una cuenta que no es válida (nombre o contraseña) o no tiene privilegios de administrador, simplemente vuelva a mostrar la interfaz de usuario de credenciales. No muestre un mensaje de error.
- Si el usuario cancela la interfaz de usuario de credenciales, devuelva el usuario a la interfaz de usuario original. No muestre un mensaje de error.
- Si el control de cuentas de usuario se ha desactivado y un usuario estándar intenta realizar una tarea que requiere elevación, proporcione un mensaje de error que indique "Esta tarea requiere privilegios de administrador. Para realizar esta tarea, debe iniciar sesión con una cuenta de administrador".
En este ejemplo, el control de cuentas de usuario se ha desactivado, por lo que un mensaje de error explica que el usuario debe usar una cuenta de administrador.
Asistentes
- No eleve varias veces. Una vez que se eleva un asistente, debe permanecer elevado.
- Si la tarea se realiza dentro del asistente, coloque un escudo UAC en el botón "Siguiente" de la página Confirmar (que debe asignarse a una etiqueta más específica). Cuando el usuario confirma:
- Si la página siguiente es una página Progreso, avance a esa página y muestre la interfaz de usuario de elevación de forma modal. Después de una elevación correcta, realice la tarea.
- Si la página siguiente es una página Finalización, avance a esa página (pero reemplace temporalmente su contenido por "Esperando permiso...") y muestre la interfaz de usuario de elevación de forma modal. Después de una elevación correcta, realice la tarea y, a continuación, muestre el contenido de la página Finalización.
- Si el usuario cancela la interfaz de usuario de elevación, vuelva a la página Confirmar. Esto permite al usuario volver a intentarlo.
- Si la tarea se realiza una vez completado el asistente, coloque un escudo UAC en el botón "Finalizar" de la página Confirmar (que debe tener una etiqueta más específica). Cuando el usuario confirma:
- Permanezca en la página Confirmar y muestre la interfaz de usuario de elevación de forma modal. Después de una elevación correcta, cierre el asistente.
- Si el usuario cancela la interfaz de usuario de elevación, vuelva a la página Confirmar. Esto permite al usuario volver a intentarlo.
- Para los asistentes largos destinados solo a los administradores, puede solicitar las credenciales de administrador en el punto de entrada antes de mostrar cualquier interfaz de usuario.
Texto
- No use puntos suspensivos simplemente porque un comando requiere elevación. La necesidad de elevar se indica con el escudo UAC.
Documentación
Al hacer referencia al control de cuentas de usuario:
- Consulte la característica como Control de cuentas de usuario (por primera mención) o UAC (en menciones posteriores), no cuenta de usuario con privilegios mínimos o LUA.
- Consulte usuarios que no son administradores como usuarios estándar.
- Consulte administradores de equipos integrados como administradores integrados.
En la documentación del usuario:
- Consulte el acto de dar su consentimiento para realizar una tarea administrativa como conceder permiso.
En programación y otra documentación técnica:
- Consulte el acto de dar su consentimiento para realizar una tarea administrativa como elevación.
- En el contexto de UAC, consulte a los administradores como administradores protegidos cuando no se elevan y Administradores elevados después de la elevación.
- Consulte el cuadro de diálogo que se usa para escribir contraseñas como la interfaz de usuario de credenciales. Consulte el cuadro de diálogo que se usa para dar su consentimiento como interfaz de usuario de consentimiento. Consulte generalmente como Interfaz de usuario de elevación.