www.ToutWindows.com
Tout sur tous les Windows...et la photo

Windows 7 : FAQ UAC
User Access Control
Contrôle de compte utilisateur

 

  Sommaire  |  Blog   |    www.MToo.net   |     Météo    |    Photos   |    Prestations    |    A propos  

   Retour accueil  


             Sommaire :
Menu

UAC, signifie User Access Control. Il s'agit d'une nouvelle couche de sécurité dont le rôle est de prévenir les utilisations non désirées  de privilèges élevés, en Français Contrôle de compte utilisateur.

L'origine de la FAQ ci dessous provient de cette page :

Windows Vista - UAC

Sous Windows Vista UAC à posé de réels problèmes et dégrade fortement la première impression des utilisateurs (et pour cause : les premières choses que l'on effectue après installation sont des installations de drivers, et installation de programmes, ce qui ne cesse de demander des confirmations d'élévations de privilèges).

Ces problèmes ont occulté les nombreuses améliorations de UAC, telles que la virtualisation de certains répertoires (Programmes) et de clefs du registre, ainsi que l'isolation de Internet Explorer. 

 

Mots clefs :
uac user account control
controle de compte utilisateur
windows seven win7 securite virtualisation registre registry

 

SOMMAIRE :

1 - Comment fonctionne UAC ?
2 - Pourquoi obtient-on des accès refusés tout en étant membre du groupe administrateur local ?
5 - Comment désactiver UAC pour un utilisateur ?
6 - Comment désactiver UAC complètement ?

8 - Le compte intégré Administrateur (ou Administrator) n'apparait pas dans la fenêtre de Logon. Est-il possible de le faire apparaitre ?
9 - Au cours d'une même session, je voudrais donner mon consentement une seule fois lorsque j'exécute plusieurs fois la même application, est ce possible ?
10 - Comment savoir si UAC va demander une confirmations en lançant un programme / une icône / un menu ?
12 - Est-il possible, temporairement, d'éviter le mécanisme UAC ?
13 - Comment UAC gère l'ouverture de session ?

15 - Pourquoi ne peut-on pas accéder aux partages administratifs ou fonctions d'administration (accès distant au registre, Gestion de l'ordinateur, ..) sous Vista ?

17 - Qu'est ce que la virtualisation UAC ?

18 - Comment lancer un programme sans qu'UAC ne demande confirmation ?

 

 


 

 

Retour au début de la page

 1 - Comment fonctionne UAC ?

Sous Windows Seven, les membres du groupe local administrateurs ont 2 jetons de sécurité ( Token ), un token complet ainsi qu'un token restreint ( filtré).
Le token filtré est le token complet auquel on a retiré tous les privilèges.
Vous pouvez le visualiser en vous loguant en tant que membre du groupe administrateurs et en lançant  whoami /all dans 2 invites de commande (cmd.exe) différentes :
_
une première en lançant simplement cmd.exe,

_ l'autre en exécutant cmd.exe par un clic droit "lancer en tant qu'administrateur".
Vérifiez que le token dans l'invite de commande non élevée n'a aucun
privilèges.
Les utilisateurs qui ne sont pas membres du groupe local administrateur ont
quand à eux un seul token.

Les utilisateurs membres du groupe local administrateurs tournent par défaut avec leur token restreint. Lorsqu'une tâche nécessite un privilège élevé, UAC demande la permission d'utiliser le token complet ( élévation de privilèges).
En fonction du paramétrage UAC, cela peut être fait de manière transparente
( no prompt ), par consentement ou saisie de mot de passe.

Le mode par défaut pour les membres du groupe administrateurs est celui du consentement ( Admin Approval Mode ).

Le compte intégré administrateur tourne lui quant à lui avec son token complet, il n'a donc pas besoin de donner son consentement pour utiliser un autre token.

L'élévation de privilège s'opère donc pour les comptes disposant de 2 tokens.
Un utilisateur standard n'ayant qu'un token restreint, UAC ne leur proposera
pas d'utiliser un autre token et l'utilisateur recevra un Access Denied ou équivalent en tentant d'exécuter une tache nécessitant des privilèges plus élevés.

Par contre, s'il exécute une application "en tant qu'administrateur", il ne passe pas par le mécanisme UAC. En effet, cela crée tout d'abord un nouveau Token d'administration complet qui est alors utilisé pour lancer l'application ( CreateProcessAsUser auquel on passe le token d'administrateur en paramètre).

C'est pourquoi l'exécution d'une invite de commande "en tant qu'administrateur" vous ouvre en fenêtre dans laquelle vous avez les privilèges complets.

Seven UAC Prompt

 

UAC Admin prompt Windows Seven w2k7

 

 

Retour au début de la page

 

 2 - Pourquoi obtient-on des accès refusés tout en étant membre du groupe administrateur local ?

Exemple :
Je suis membre du groupe local administrateurs en mode demande de prompt pour élévation (Admin Approval ) et pourtant lorsque je lance certaines commandes dans une invite de commande, je reçois un access denied.
Windows ne devrait-il pas me demander la confirmation d'exécution ?

Les développeurs d'application pour Windows Vista ou Seven doivent fournir un fichier d'entête (manifest) qui décrit entre autre le niveau d'exécution requis par l'application ( c'est à dire le choix d'utilisation du token complet ou restreint ).
Il y a 3 niveaux
d'éxécution :  
_ AsInvoker :  signifie que l'application doit s'exécuter avec le token actuel de l'appelant et donc ne pas demander d'élévation de privilèges.
_ requireAdministrator : signifie que l'application doit s'exécuter avec un token complet d'administration et donc UAC peut vous demander l'accès au token complet si vous tournez avec le token restreint.
_ highestAvailable :  l'application fonctionne avec le privilège le plus haut auquel l'utilisateur accède.

Si l'administrateur lance une invite de commande avec son token restreint, le contexte d'exécution est celui du token restreint et comme AsInvoker ne demande pas d'élévation de privilèges, un refus d'accès (accès denied) est retourné.

En lançant cmd.exe par un clic droit et "Run as administrator", le token utilisé est alors le token complet.
 

Vous pouvez déterminer le niveau d'exécution requis par chaque tache d'administration fournie par Microsoft en examinant les fichiers programmes :
-
Téléchargez strings.exe de sysinternals.
- Dans %WINDIR%System32, lancez strings.Exe *.exe | findstr -i "AsInvoker"
- Dans %WINDIR%Sy
stem32, lancez strings.Exe *.exe | findstr -i "highestAvailable"
- Dans %WINDIR%System32, lancez strings.Exe *.exe | findstr -i "requireAdministrator"


Par exemple :
- bcdedit requiert AsInvoker.
- mmc requiert highestAvailable.
- defrag requiert requireAdministrator.

Retour au début de la page

 5 - Comment désactiver UAC pour un utilisateur ?

Panneau de configuration :
Pour un utilisateur, vous pouvez désactiver l'utilisation d'UAC en utilisant le Panneau de Configuration :
Panneau de configuration -> Comptes utilisateurs -> Modifier les paramètres de contrôle de compte utilisateur

Descendez le curseur au niveau le plus bas : ne jamais m'avertir.

Retour au début de la page

 6  - Comment modifier le comportement de UAC ?

Contrairement à Vista ou le comportement de UAC était peu réglable, il existe différents niveaux de réglages d'UAC :

UAC 1 UAC 2
UAC niveau bas UAC désactivé

_ Base de registre :
Les clef de la base de registre se trouvent ici :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]

Les valeurs qui changent entre Vista et Seven sont :

Paramètre Valeur Vista Valeur Seven Valeurs possibles
ConsentPromptBehaviorAdmin (*) 2 5 0 : Pas de confirmation d'élévation pour les administrateurs
1 : Demande une authentification pour l'élévation pour les administrateurs
2 : Demande l'autorisation d'élévation pour les administrateurs
5 : pas encore documenté
ConsentPromptBehaviorUser 1 3 0 : Les opérations demandant une élévation ne fonctionneront pas pour les utilisateurs non admins
1 : Les opérations nécessitant une élévation se verront proposer une authentification pour les utilisateurs non admins
3 : pas encore documenté
EnableInstallerDetection 1 1 0 : pas d'élévation automatique pour les programmes d'installation
1 : détection heuristique et élévation des privilèges pour les programmes d'installation
EnableLUA (*) 1 1 0 : désactive UAC
1 : active UAC
EnableSecureUIAPPaths 1 1 0 : N'élève pas les privilège pour les applications qui ne sont pas installées dans des emplacements protégés
1 : Élève les privilèges pour les applications installés dans des emplacements protégés
EnableUIADesktopToggle 0 0 0 : Ne désactive pas la protection du bureau (ce qui provoque un clignotement de l'écran et un grisé des autres messages)
1 : protection du bureau désactivée
EnableVirtualization 1 1 0 : Désactivé
1 : active la virtualisation de certains répertoires et de certaines clefs du registre, cf
17 - Qu'est ce que la virtualisation UAC ?
FileAdministratorToken 1 1 0 : Désactivé
1 : Activation de UAC pour le compte Administrator (Administrateur) par défaut de Windows
PromptOnSecureDesktop (*) 1 1 0 : Désactivé
1 : Active le Bureau sécurisé pour les demandes d'élévation
ValidateAdminCodeSignatures 0 1 0 : Désactivé
1 : N'autorise l'élévation de privilège que pour les applications signées et validées
LocalAccountTokenFilterPolicy 0 0 0 : Impossible d'accéder aux partages administratifs : votre Token administrateur n'est pas diffusé sur le réseau
1 : le totalité de vos informations de connexion (y compris les privilèges administrateur) sont remontées (cf
http://support.microsoft.com/kb/927832/ )

* Les trois clefs qui changent avec le curseur sont :

Position du curseau 0
(Never notify)
1
(Don't notify
Windows settings
/ don't dimm)
2
(Don't notify Windows Settings)
3
(Always notify)
ConsentPromptBehaviorAdmin 0 5 5 2
EnableLUA 0 1 1 1
PromptOnSecureDesktop 0 0 1 1

Le niveau 2 est le niveau par défaut.
Seul l'activation ou la désactivation de UAC nécessitent un redémarrage (merci à
Jean Claude Bellamy pour cette info).

La documentation actuelle est ici : http://msdn.microsoft.com/en-us/library/cc232771(PROT.13).aspx (mais pas à jour pour Windows Seven)

_ en utilisant MSCONFIG :
Démarrer / Executer MSCONFIG,
US : Cliquez sur l'onglet Tools / sélectionnez Disable UAP, et cliquez sur Launch

FR : Cliquez sur l'onglet Outils / séléctionnez Modifier les paramètres de contrôle des comptes utilisateurs, puis cliquez sur Exécuter

_ en ligne de commande :

Démarrer / Exécuter : E:\Windows\System32\UserAccountControlSettings.exe


Redémarrez l'ordinateur

Retour au début de la page
 

 8  - Le compte intégré Administrateur (ou Administrator) n'apparait pas dans la fenêtre de Logon. Est-il possible de le faire apparaitre ?

Ce compte apparait lorsqu'il n'y a pas de membres dans le groupe local Administrateurs.

Il est également possible de le faire apparaitre en ajoutant un clé de registre pour le compte administrateur dans HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList.

Ajoutez une nouvelle valeur nommée Administrateur et positionnez la valeur à 1.
Pour le cacher de la fenêtre d'accueil, positionnez cette valeur à 0.

 

Retour au début de la page
 

 9  - Au cours d'une même session, je voudrais donner mon consentement une seule fois lorsque j'exécute plusieurs fois la même application, est ce possible ?

Microsoft ne l'a pas prévu (Grrrrrrrrrrrrrrrrrrrrrrrrr !).
L'idée d'UAC est d'empêcher un code malveillant de s'exécuter sans votre consentement si vous désirez bénéficier de cette protection UAC.
Donner son consentement une fois pour toute pourrait conduire un code
malveillant à utiliser à votre insu et de manière silencieuse un contexte de sécurité plus élevé que le votre ( token complet ).

Retour au début de la page
 

 10  - Comment savoir si UAC va demander une confirmations en lançant un programme / une icône / un menu ?

Microsoft a conçu tout un jeu d'icônes et logos que les développeurs doivent inclure dans leur programmes, en voici des exemples :

Ressource Icône Vista Icône Windows 7 Nom ressource

Icône :

icone 

 User resource: IDI_SHIELD

Bouton :

 

UAC Seven

Button_SetElevationRequired(hwndButton)

Lien :

 

UAC Seven icone

Layout IDI_SHIELD next to syslink
Load IDI_SHIELD and set as command link icon

Menu contextuel :

 

UAC Seven icone

Icon support

 

Retour au début de la page

 12 - Est-il possible, temporairement, d'éviter le mécanisme UAC ?

Pour cela, il faut faire tourner le shell avec un token complet d'administrateur au lieu d'un token d'utilisateur final ou d'un token filtré.

 - Lancez une invite de commande par un click droit runas administrator.

- Killez explorer.exe (gestionnaire des tâches)

- Dans l'invite de commande administrateur, lancez un nouvel explorer ( explorer.exe).

 Ce nouveau shell hérite alors du token complet de l'administrateur.

Les processus enfant alors lancés au travers de ce nouveau shell sont donc exécutés directement avec un token complet, sans passer par le mécanisme d'élévation UAC (ce qui est indiqué en dessous de la ligne de commande de Démarrer / Exécuter :

UAC

Retour au début de la page

 13 - Comment UAC gère l'ouverture de session ?

Les applications qui nécessitent une élévation de privilège sont bloquées.

Dans ce cas l'utilisateur est prévenu par un message dans la barre des taches après la démarrage.

Dans ce cas en cliquant sur le message l'utilisateur peut exécuter l'application qui a été bloquée ou choisir les applications à autoriser.

Voici les sources de programmes bloquées :

  • Menu démarrage utilisateur
  • clefs RUN du registre utilisateur
  • Menu démarrage machine
  • clefs RUN de la machine

Quelques exceptions :

les clefs RUNOnce (pour permettre la fin de l'installation d'un programme après redémarrage)

les applications imposées par les stratégies systèmes dans les clefs RUN


Retour au début de la page

 15 - Pourquoi ne peut-on pas accéder aux partages administratifs ou fonctions d'administration (accès distant au registre, Gestion de l'ordinateur, ..) sous Windows 7 ?


UAC interdit l'utilisation de privilèges administrateur local par le réseau par défaut.

Il est possible de désactiver l'UAC pour l'accès à distance uniquement :

Démarrer, Exécuter puis tapez regedit
Ouvrez : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system.
Créez une nouvelle valeur Dword nommée LocalAccountTokenFilterPolicy
Modifiez ça valeur hexadécimale à 1
Redémarrer l'ordinateur

Vous pourrez désormais accéder aux partages administratifs et administrer à distance le PC via les consoles MMC avec un compte membre du groupe Administrateurs.

Pour réactiver l'UAC pour l'accès à distance, il suffira de supprimer la valeur DWORD, ou de lui mettre la valeur 0

Retour au début de la page

 17 - Qu'est ce que la virtualisation UAC ?


Windows 7 permet aux applications qui ne sont pas écrites pour Seven de s’exécuter dans les comptes d’utilisateur standard à l’aide de la vitalisation du système de fichiers et de l’espace de noms du registre. Lorsqu’une application modifie un emplacement de système global dans le système de fichiers ou dans le registre, et que cette opération échoue parce que l’accès lui est refusé, Windows redirige l’opération vers une zone propre à l’utilisateur. Lorsque l’application lit à partir d’un emplacement système global, Windows cherche d’abord des données dans la zone propre à l’utilisateur et, si aucune donnée n’est présente, permet la tentative de lecture à partir de l’emplacement global.

Vous pouvez voir l’état de virtualisation d’un processus en ajoutant la colonne Virtualisation à la page Processus du Gestionnaire des tâches.

Microsoft recommande que les programmes d’installation d’application globaux qui comptent s’exécuter avec les droits administratifs créent un répertoire sous le répertoire %ProgramFiles% pour stocker les fichiers de l’application exécutables et les données auxiliaires et créer une clé sous HKEY_LOCAL_MACHINE\Software pour leurs paramètres d’application. Lorsqu’une application s’exécute, elle peut le faire dans différents comptes utilisateur et devrait donc enregistrer les données spécifiques à l’utilisateur dans un répertoire %AppData% propre à chaque utilisateur et enregistrer des paramètres propres à chaque utilisateur dans le profil d’annuaire de l’utilisateur sous HKEY_CURRENT_USER\ Software. Les comptes utilisateur standard n’ont pas de droits d’écriture dans le répertoire %ProgramFiles% ou dans HKEY_LOCAL_MACHINE\Software, mais puisque la plupart des systèmes de Windows sont à utilisateur unique et que la majorité des utilisateurs étaient administrateurs jusqu’à Windows Seven, les applications qui enregistrent de façon inexacte des données utilisateur et des paramètres à ces emplacements fonctionnement quand même.

Windows Seven permet à ces applications d’héritage de s’exécuter dans les comptes d’utilisateur standard à l’aide de la virtualisation du système de fichiers et de l’espace de noms du registre. Lorsqu’une application modifie un emplacement de système global dans le système de fichiers ou dans le registre, et que cette opération échoue parce que l’accès lui est refusé, Windows redirige l’opération vers une zone propre à l’utilisateur. Lorsque l’application lit à partir d’un emplacement système global, Windows cherche d’abord des données dans la zone propre à l’utilisateur et, si aucune donnée n’est présente, permet la tentative de lecture à partir de l’emplacement global.

Les emplacements de système de fichiers qui sont virtualisés pour les processus d’héritage sont %ProgramFiles%, %ProgramData% et %SystemRoot%, à l’exclusion de certains sous-répertoires spécifiques. Cependant, tous les fichiers possédant une extension exécutable, y compris .exe, .bat, .scr, .vbs et autres, sont exclus de la virtualisation. Cela signifie que les programmes qui se mettent à jour à partir d’un compte utilisateur standard échouent au lieu de créer des versions privées de leurs exécutables qui ne sont pas visibles par un administrateur exécutant un programme de mise à niveau global.

La virtualisation de registre est implémentée de façon légèrement différente de la virtualisation de système de fichiers. Les clés de registre virtualisées incluent la plupart de la branche HKEY_LOCAL_MACHINE\Software, mais il existe de nombreuses exceptions, comme ce qui suit :
HKLM\Software\Microsoft\Windows
HKLM\Software\Microsoft\Windows NT
HKLM\Software\Classes

Seules les clés qui sont habituellement modifiées par les applications, mais sans provoquer de problèmes de compatibilité ou d’interopérabilité, sont virtualisées. Windows redirige les modifications de clés virtualisées par une application vers un registre de racine virtuelle de l’utilisateur sur HKEY_CURRENT_USER\Software\Classes\VirtualStore. La clé est située dans la ruche des Classes de l’utilisateur, %LocalAppData%\Microsoft\Windows\UsrClass.dat, qui, comme toutes les autres données de fichier virtualisées, n’erre pas avec un profil utilisateur errant.

Au lieu de maintenir une liste fixe d’emplacements virtualisés comme Windows le fait pour le système de fichiers, l’état de virtualisation d’une clé est enregistré comme un indicateur, REG_KEY_DONT_VIRTUALIZE, dans la clé elle-même. L’utilitaire Reg.exe peut afficher l’indicateur, ainsi que deux autres indicateurs liés à la virtualisation, REG_KEY_DONT_SILENT_FAIL et REG_KEY_RECURSE_FLAG. cf
Windows Vista - Le Registre

Retour au début de la page

 18 - Comment lancer un programme sans qu'UAC ne demande confirmation ?

De nombreux outils et astuces permettent de créer des raccourcis ne nécessitant pas de confirmation d'élévation de privilèges.

a - Créer une tâche : (source : http://www.howtogeek.com/howto/windows-vista/create-administrator-mode-shortcuts-without-uac-prompts-in-windows-vista/ ), fonctionne aussi sous Windows 7

Lancez le Planificateur de tâches, puis créez une tâche : UAC Scheduler
Donnez un nom à la tâche et cochez Exécuter avec les autorisation maximales.

Dans l'onglet Actions, définissez le nom du programme ou script à lancer

UAC Tack
Vous pouvez tester la tâche en cliquant dessus puis sélectionnez Exécuter
Il ne vous reste plus qu'à créer un raccourci lançant la tâche :
Cliquez droit sur le bureau, puis sélectionnez Nouveau / Raccourci
 
La ligne de commande se présente sous la forme :

schtasks /run /tn "NOMTACHE"

Vous devez remplacer NOMTACHE par le nom de la tâche que vous venez de créer.

NB : vous pouvez ensuite personnaliser le raccourci telles que la taille de la fenêtre initiale et l'icône.

Vous n'avez maintenant plus aucune raison de désactiver UAC.

 

(c) Laurent Gébeau

 

 

Toutwindows.com - Sommaire

Windows 7 - Sommaire

Laissez vos commentaires ici