# User Account Control

User Account Control (UAC, « contrôle du compte de l'utilisateur ») est un mécanisme de protection des données introduit dans les systèmes d'exploitation Windows Vista et 7.
UAC est aussi connu sous ses dénominations précédentes durant le développement de Windows Vista, à savoir UAP (User Account Protection) et LUP (Least User Privilege).

## Présentation

Ce mécanisme permet d'exécuter par défaut les programmes avec des droits restreints, évitant ainsi que des applications puissent tourner avec des droits administratifs, qui permettraient de modifier la sécurité du système d'exploitation.

## Genèse

Par rapport à d'autres systèmes d'exploitation modernes comme Linux ou Mac OS X, on a souvent reproché à Windows son manque de sécurité et sa capacité à être infecté par des virus, des malwares ou des spywares. Le problème originel réside surtout dans le fait que l'utilisateur principal d'un système Windows se connecte par défaut en tant qu'administrateur, ce qui l'autorise à modifier pleinement le système et délègue aux programmes tous les droits d'accès et de contrôle sur les objets systèmes. Historiquement, ce comportement hérite des premières versions grand public de Windows, où l'utilisateur devait pouvoir facilement modifier les paramètres de son système et installer des programmes sans avoir à changer d'utilisateur. Cette démarche est en opposition complète avec celle introduite par Unix -- dix ans avant la création de MSDOS, l'ancêtre de Windows --, où l'utilisation du compte d'administration est dissuadée en dehors de toute action temporaire d'administration.
Sous Windows, ce mode de fonctionnement a persisté pour de multiples raisons :
* Dans le passé peu de recommandations ont été faites par Microsoft sur le danger de l'utilisation au quotidien d'un compte administrateur ;
* Lors de l'installation de Windows, Microsoft n'a jamais fourni d'outil intégré pour que la création d'une paire de compte administrateur/limité soit réalisée de manière automatique ou conviviale ;
* Un nombre non négligeable d'applications Windows ne s'exécutent pas correctement si elles n'obtiennent pas de droits administrateurs.

## Rôle et fonctionnement d'UAC

UAC a été conçu dans le cadre d'un processus global visant à introduire plus de sécurité dans Windows. UAC permet de définir pour chaque programme qui est lancé un niveau de privilèges indépendant des droits possédés par l'utilisateur actif. Lorsque UAC est activé, tous les utilisateurs (même ceux qui possèdent des privilèges d'administration) possèdent par défaut des droits identiques à ceux des utilisateurs limités.
Un administrateur local se voit ainsi attribuer au niveau du système deux jetons d'accès (access tokens). Le premier est celui qui englobe tous ses droits et ses privilèges administrateur, le second est un dérivé du premier, dit « filtré », qui contient des privilèges d'utilisateur standard. Par défaut, si UAC est activé, c'est le jeton filtré qui est utilisé, à moins qu'un programme signale qu'il doit être élevé pour fonctionner, c’est-à-dire exécuté dans un contexte administratif.
Lorsque Windows détecte qu'un programme nécessite des droits administrateur, il demande explicitement à l'utilisateur de valider un dialogue d'avertissement indiquant que l'application va être démarrée avec des droits étendus. Si l'utilisateur n'est pas administrateur, il doit en outre saisir le mot de passe d'un administrateur actif pour exécuter le programme. Il n'y a pas de moyen permettant d'accorder de manière permanente des droits administrateur à un programme. Il n'est donc plus possible qu'un programme nécessitant des droits administrateurs soit lancé de manière invisible, sauf si le programme appelant possède lui-même les droits administrateurs et a été lui-même approuvé manuellement par l'utilisateur.
Les exécutables non compatibles UAC (c’est-à-dire qui n'incorporent pas des ressources particulières spécifiant dans quel contexte ils doivent être démarrés) sont toujours lancés avec des droits restreints et des privilèges minimum. Cela peut provoquer les problèmes qui existaient précédemment lorsque des programmes non conçus pour s'exécuter dans des contextes limités tentaient de manipuler des ressources système. Windows détecte néanmoins automatiquement les installateurs qui sont lancés avec des droits administrateurs.

## Compatibilité

L'activation par défaut d'UAC dans Windows pose certains problèmes de compatibilité puisque d'une part cela force les programmes à fonctionner dans un environnement restreint (obligeant dans certains cas un redécoupage fonctionnel en fonction des droits d'exécution), d'autre part car le lancement par programmation d'un programme nécessitant des privilèges administrateur échouera par défaut. Néanmoins, des programmes qui évitent de demander plus de droits que nécessaire ne doivent pas être en théorie affectés par UAC.
Les applications non compatibles UAC sont associées avec un service de virtualisation, activé lors de l'accès aux branches de registre à visibilité globale (telle HKEY_LOCAL_MACHINE\Software) et à certaines parties du système de fichiers (comme C:\Program Files). Les modifications apportées aux objets virtualisés sont enregistrées dans le profil de l'utilisateur courant et non pour tous les utilisateurs de l'ordinateur.

## Aspect graphique

Microsoft a introduit une nouvelle icône, celle d'un bouclier aux couleurs de Windows, pour signifier que l'utilisation d'un élément d'une interface demandera la validation du dialogue UAC d'exécution.