Arquitectura de UAC

En el diagrama siguiente se detalla la arquitectura de UAC.

Diagrama que describe la arquitectura de UAC.

Usuario

  • El usuario realiza una operación que requiere privilegios: si la operación cambia el sistema de archivos o el registro, se llama a Virtualization. Todas las demás operaciones llaman a ShellExecute.
  • ShellExecute: ShellExecute llama a CreateProcess. ShellExecute busca el ERROR_ELEVATION_REQUIRED error de CreateProcess. Si recibe el error, ShellExecute llama al servicio Application Information para intentar realizar la tarea solicitada con el símbolo del sistema con privilegios elevados.
  • CreateProcess: si la aplicación requiere elevación, CreateProcess rechaza la llamada con ERROR_ELEVATION_REQUIRED.

Sistema

  • Servicio de información de aplicaciones:

    • Un servicio del sistema que ayuda a iniciar aplicaciones que requieren uno o varios privilegios elevados o derechos de usuario para ejecutarse.
    • El servicio Application Information ayuda a iniciar estas aplicaciones mediante la creación de un nuevo proceso para la aplicación con el token de acceso completo de un usuario administrativo cuando se requiere elevación.
    • En función de las directivas configuradas, el usuario podría dar su consentimiento.
  • Elevación de una instalación de ActiveX:

    • Si ActiveX no está instalado, el sistema comprueba el nivel de control deslizante de UAC.
    • Si está instalado ActiveX, se comprueba el valor control de cuenta de usuario: cambiar al escritorio seguro al solicitar elevación directiva de grupo.
  • Comprobar el nivel de control deslizante de UAC: UAC tiene un control deslizante para seleccionar entre cuatro niveles de notificación:

    • Siempre notificará lo siguiente:
      • Notifíquelo cuando los programas intenten instalar software o realizar cambios en el equipo.
      • Notifíquelo cuando realice cambios en la configuración de Windows.
      • Inmovilizar otras tareas hasta que responda.
      • Se recomienda si a menudo instala software nuevo o visita sitios web desconocidos.
    • Notifíqueme solo cuando los programas intenten realizar cambios en mi equipo :
      • Notifíquelo cuando los programas intenten instalar software o realizar cambios en el equipo.
      • No se le notificará cuando realice cambios en la configuración de Windows.
      • Inmovilizar otras tareas hasta que responda.
      • Se recomienda si no suele instalar aplicaciones o visitar sitios web desconocidos.
    • Notifíqueme solo cuando los programas intenten realizar cambios en mi equipo (no atenúe mi escritorio):
      • Notifíquelo cuando los programas intenten instalar software o realizar cambios en el equipo.
      • No se le notificará cuando realice cambios en la configuración de Windows.
      • No inmovilizar otras tareas hasta que responda.
      • No se recomienda. Elija esta opción solo si tarda mucho tiempo en atenuar el escritorio en el equipo.
    • Nunca notificar (Deshabilitar mensajes de UAC) hará lo siguiente:
      • No le notifique cuando los programas intenten instalar software o realizar cambios en el equipo.
      • No se le notificará cuando realice cambios en la configuración de Windows.
      • No inmovilizar otras tareas hasta que responda.
      • No se recomienda debido a problemas de seguridad.
  • Escritorio seguro habilitado: el control de cuenta de usuario: cambie al escritorio seguro cuando se active la configuración de la directiva de elevación:

    • Si el escritorio seguro está habilitado, todas las solicitudes de elevación van al escritorio seguro, independientemente de la configuración de la directiva de comportamiento de mensajes para administradores y usuarios estándar.
    • Si el escritorio seguro no está habilitado, todas las solicitudes de elevación van al escritorio del usuario interactivo y se usa la configuración por usuario para administradores y usuarios estándar.
  • CreateProcess:

    • CreateProcess llama a AppCompat, Fusion y la detección del instalador para evaluar si la aplicación requiere elevación.
    • A continuación, se inspecciona el archivo para determinar su nivel de ejecución solicitado, que se almacena en el manifiesto de aplicación para el archivo.
    • CreateProcess produce un error si el nivel de ejecución solicitado especificado en el manifiesto no coincide con el token de acceso y devuelve un error (ERROR_ELEVATION_REQUIRED) a ShellExecute.
  • AppCompat:

    • La base de datos AppCompat almacena información en las entradas de corrección de compatibilidad de la aplicación para una aplicación.
  • Fusión:

    • La base de datos fusion almacena información de manifiestos de aplicación que describen las aplicaciones.
    • El esquema de manifiesto se actualiza para agregar un nuevo campo de nivel de ejecución solicitado.
  • Detección del instalador:

    • La detección del instalador detecta los archivos de instalación y ayuda a evitar que las instalaciones se ejecuten sin el conocimiento y el consentimiento del usuario.

Núcleo

  • Virtualización: la tecnología de virtualización garantiza que las aplicaciones no conformes no se ejecuten o no se ejecuten de forma silenciosa de forma que no se pueda determinar la causa. UAC también proporciona virtualización y registro de archivos y registro para aplicaciones que escriben en áreas protegidas.
  • Sistema de archivos y registro: la virtualización de archivos y registros por usuario redirige las solicitudes de escritura de archivos y registro por equipo a ubicaciones equivalentes por usuario. Las solicitudes de lectura se redirigen primero a la ubicación virtualizada por usuario y a la segunda ubicación por equipo.

El control deslizante nunca desactiva completamente el UAC. Si lo establece en Nunca notificar, hará lo siguiente:

  • Mantener el servicio UAC en ejecución
  • Hacer que todas las solicitudes de elevación iniciadas por los administradores se aproben automáticamente sin mostrar una solicitud de UAC
  • Denegar automáticamente todas las solicitudes de elevación para los usuarios estándar

Importante

Para deshabilitar completamente UAC, debe deshabilitar la directiva Control de cuentas de usuario: ejecute todos los administradores en Administración modo de aprobación. Es posible que algunas aplicaciones de Plataforma universal de Windows no funcionen cuando UAC está deshabilitado.

Virtualización

Dado que los administradores del sistema en entornos empresariales intentan proteger los sistemas, muchas aplicaciones de línea de negocio (LOB) están diseñadas para usar solo un token de acceso de usuario estándar. Como resultado, no es necesario reemplazar la mayoría de las aplicaciones cuando UAC está activado.

Windows incluye tecnología de virtualización de archivos y registro para aplicaciones que no son compatibles con UAC y que requieren que el token de acceso de un administrador se ejecute correctamente. Cuando una aplicación administrativa que no es compatible con UAC intenta escribir en una carpeta protegida, como Archivos de programa, UAC proporciona a la aplicación su propia vista virtualizada del recurso que intenta cambiar. La copia virtualizada se mantiene en el perfil del usuario. Esta estrategia crea una copia independiente del archivo virtualizado para cada usuario que ejecuta la aplicación no compatible.

La mayoría de las tareas de la aplicación funcionan correctamente mediante las características de virtualización. Aunque la virtualización permite la ejecución de la mayoría de las aplicaciones, es una solución a corto plazo y no a largo plazo. Los desarrolladores de aplicaciones deben modificar sus aplicaciones para que sean compatibles lo antes posible, en lugar de depender de la virtualización de archivos, carpetas y registros.

La virtualización no es una opción en los siguientes escenarios:

  • La virtualización no se aplica a las aplicaciones con privilegios elevados y que se ejecutan con un token de acceso administrativo completo
  • La virtualización solo admite aplicaciones de 32 bits. Las aplicaciones de 64 bits sin privilegios elevados reciben un mensaje de acceso denegado cuando intentan adquirir un identificador (un identificador único) en un objeto de Windows. Las aplicaciones nativas de Windows de 64 bits deben ser compatibles con UAC y escribir datos en las ubicaciones correctas.
  • La virtualización está deshabilitada si la aplicación incluye un manifiesto de aplicación con un atributo de nivel de ejecución solicitado

Niveles de ejecución de solicitudes

Un manifiesto de aplicación es un archivo XML que describe e identifica los ensamblados compartidos y privados en paralelo a los que una aplicación debe enlazar en tiempo de ejecución. El manifiesto de aplicación incluye entradas con fines de compatibilidad de aplicaciones UAC. Las aplicaciones administrativas que incluyen una entrada en el manifiesto de la aplicación solicitan al usuario permiso para acceder al token de acceso del usuario. Aunque carecen de una entrada en el manifiesto de la aplicación, la mayoría de las aplicaciones administrativas se pueden ejecutar sin modificaciones mediante correcciones de compatibilidad de aplicaciones. Las correcciones de compatibilidad de aplicaciones son entradas de base de datos que permiten que las aplicaciones que no son compatibles con UAC funcionen correctamente.

Todas las aplicaciones compatibles con UAC deben tener un nivel de ejecución solicitado agregado al manifiesto de aplicación. Si la aplicación requiere acceso administrativo al sistema, marcar la aplicación con un nivel de ejecución solicitado de require administrator garantiza que el sistema identifica este programa como una aplicación administrativa y realiza los pasos de elevación necesarios. Los niveles de ejecución solicitados especifican los privilegios necesarios para una aplicación.

Tecnología de detección del instalador

Los programas de instalación son aplicaciones diseñadas para implementar software. La mayoría de los programas de instalación escriben en directorios del sistema y claves del Registro. Estas ubicaciones del sistema protegidas normalmente solo pueden escribirse por un administrador en la tecnología de detección del instalador, lo que significa que los usuarios estándar no tienen acceso suficiente para instalar programas. Windows detecta heurísticamente los programas de instalación y solicita credenciales de administrador o aprobación del usuario administrador para ejecutarse con privilegios de acceso. Windows también detecta heurísticamente actualizaciones y programas que desinstalan aplicaciones. Uno de los objetivos de diseño de UAC es evitar que las instalaciones se ejecuten sin el conocimiento y el consentimiento del usuario, ya que los programas de instalación escriben en áreas protegidas del sistema de archivos y el registro.

La detección del instalador solo se aplica a:

  • Archivos ejecutables de 32 bits
  • Aplicaciones sin un atributo de nivel de ejecución solicitado
  • Procesos interactivos que se ejecutan como un usuario estándar con UAC habilitado

Antes de crear un proceso de 32 bits, se comprueban los siguientes atributos para determinar si es un instalador:

  • El nombre de archivo incluye palabras clave como "install", "setup" o "update".
  • Los campos recurso de control de versiones contienen las siguientes palabras clave: Vendor, Company Name, Product Name, File Description, Original Filename, Internal Name y Export Name.
  • Las palabras clave del manifiesto en paralelo se incrustan en el archivo ejecutable.
  • Las palabras clave en entradas stringTable específicas están vinculadas en el archivo ejecutable.
  • Los atributos clave de los datos del script de recursos están vinculados en el archivo ejecutable.
  • El archivo ejecutable contiene secuencias de bytes de destino.

Nota

Las palabras clave y secuencias de bytes se derivan de características comunes observadas a partir de diversas tecnologías del instalador.

Nota

El control de cuenta de usuario: detectar instalaciones de aplicaciones y solicitar la directiva de elevación debe estar habilitado para que la detección del instalador detecte programas de instalación. Para obtener más información, vea Lista de configuración de Control de cuentas de usuario.