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 el 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 dando 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 denominan 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.

screen shot of 'allow program' security message

La interfaz de usuario de consentimiento, que se usa para elevar a los administradores protegidos para tener privilegios administrativos.

screen shot of message asking for password

La interfaz de usuario de credenciales, que se usa para elevar 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 que 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 UAC bien diseñadas permiten a los usuarios ser más productivos cuando se ejecutan 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.
  • En el caso de los entornos domésticos, permite un mejor control parental sobre los cambios en todo el sistema, incluido el software que se instala.

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 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 para poder hacer cualquier otra cosa en el equipo. El atenuamiento del escritorio se conoce como escritorio seguro porque otros programas no se pueden ejecutar mientras está atenuado.

Windows 7 presenta dos opciones 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.

screen shot of four uac settings in windows 7

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 elevar 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 Windows Sistema.
  • 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 conceda 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 sola elevación. Las tareas que requieren varias elevaciones se vuelven tediosas rápidamente.
  • Vuelva 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:

  1. 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 las tareas que no tienen un escudo.

    screen shot of uac shield icons and their labels

    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 por completo, 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.

  2. Elevación. En El caso de los administradores protegidos, la tarea solicita consentimiento mediante la interfaz de usuario de consentimiento. Para los usuarios estándar, la tarea solicita credenciales de administrador mediante la interfaz de usuario de credenciales.

    screen shot of two types of elevation

    Estos ejemplos muestran la interfaz de usuario de credenciales y la interfaz de usuario de consentimiento.

  3. Proceso con privilegios elevados independientes. Internamente, se crea un nuevo proceso con privilegios elevados para realizar la tarea.

  4. Vuelva a privilegios mínimos. Si es necesario, vuelva al privilegio mínimo para completar los pasos que no requieran elevación.

Tenga en cuenta que las tareas no recuerdan 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):

  1. 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 en 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:

    screen shot of message: you do not have privilege

    En este ejemplo, Windows los usuarios xp tenían que tener privilegios administrativos para ver o cambiar la zona horaria actual.

    Correcto:

    screen shot of date and time dialog box

    En este ejemplo, la característica de zona horaria se rediseñó en Windows 7 y Windows Vista para que funcione para todos los usuarios.

  2. 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. Proporcionar a todos los usuarios acceso a información útil de solo lectura. Identifique claramente las tareas administrativas con el escudo UAC.

    graphic of uac shield showing elevation required

    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.

  3. Permitir que los usuarios estándar intenten realizar tareas y elevar en caso de error. Si los usuarios estándar pueden ver la información y pueden realizar algunos cambios sin elevación, permitirles acceder a la interfaz de usuario y hacer que solo se elevan 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 Windows Explorer. También es adecuado para la configuración en Panel de control páginas de concentrador híbrido.

    screen shot of access is denied message

    En este ejemplo, el usuario intentó cambiar las propiedades del archivo de programa, pero no tenía suficientes privilegios. El usuario puede elevar e intentarlo de nuevo.

  4. 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 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 del escudo UAC.

    screen shot of windows logo and uac shield overlay

    En este ejemplo, el programa requiere privilegios administrativos para iniciarse.

Directrices

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.

    screen shot of photo files in windows explorer

    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:

    screen shot of command button with uac shield icon

    Botón de comando que requiere elevación inmediata.

    Vínculos de comandos:

    screen shot of command link with uac shield icon

    Vínculo de comando que requiere elevación inmediata.

    Enlaces:

    screen shot of change account link with uac shield

    Vínculo que requiere elevación inmediata.

    Menús:

    screen shot of menu with uac shield

    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:

    screen shot of date and time settings dialog box

    En este ejemplo, la configuración de usuario estándar se mezcla incorrectamente con la configuración administrativa.

    Correcto:

    screen shot of same dialog box without uac shields

    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:
    • screen shot of window with only one button active
    • 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:

    screen shot of message: fabrikam restore can't run

    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.
    screen shot of windows logo and uac shield overlay
    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.
    screen shot of change account link and uac shield
    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.
    screen shot of change settings link and uac shield
    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.
    screen shot of error with uac icon on retry button
    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.
    screen shot of next command button with uac shield
    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.
    screen shot of command link with uac shield
    Escudo UAC en los 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 comandos 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 reproducir la interfaz de usuario de credenciales. No muestre un mensaje de error.
  • Si el usuario cancela la interfaz de usuario de credenciales, vuelva al 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".

screen shot of task requires privileges message

En este ejemplo, el control de cuentas de usuario se ha desactivado para que un mensaje de error explique que el usuario debe usar una cuenta de administrador.

Asistentes

  • No elevar 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 de confirmación (que debe tener 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 realizar la 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 modáctica. 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. Al hacerlo, el usuario puede intentarlo de nuevo.
  • Si la tarea se realiza una vez completado el asistente, coloque un escudo UAC en el botón "Finalizar" de la página de confirmación (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 modáctica. 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. Al hacerlo, el usuario puede intentarlo de nuevo.
  • Para los asistentes largos diseñados solo para 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 solo 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 no administradores como usuarios estándar.
  • Consulte Administradores de equipos integrados como administradores integrados.

En la documentación del usuario:

  • Consulte el acto de dar consentimiento para realizar una tarea administrativa como conceder permiso.

En programación y otra documentación técnica:

  • Consulte el acto de dar 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 ambos en general como interfaz de usuario de elevación.