Ca fait longtemps que je voulais faire un petit billet sur UAC. Mi-janvier, je pensais (naïf) que tout avait été dit. Depuis, User Account Control continue à déchainer les passions. Les uns s'indignent, critiquent et crient au scandale ou à la mauvaise plaisanterie (voyez plutôt, Vista Security Model – A Big Joke? Ou Kaspersky s'interroge…). Microsoft explique, et rationalise. Ben non, UAC n'est pas une frontière de sécurité nous dit Mark, "Security Features vs Convenience" nous dit Jim. Et puis, on ne va quand même pas chipoter sur les couleurs du prompt

UAC, pour moi (hey, c'est mon blog ici, j'ai le droit de parler pour moi, hein), c'est l'exécution des applications en moindre privilège par défaut. Trois cas se présentent: 1) vous n'êtes pas admin et n'avez aucun privilège particulier. Très bien vous continuez comme cela. 2) vous n'êtes pas admin, mais votre compte utilisateur a trop de privilèges. Et bien on vous enlève ceux qui sont en trop. Allez circulez, restez pas là bouche bée! 3) vous êtes admin? Tous nos respects. Mais ici, tout le monde est au même régime: utilisateur standard.

Oh la, oh la! Pas de panique. On sait très bien que certaines actions nécessitent privilèges d'admin. Deux cas se présentent: votre compte n'est pas admin et n'a pas les privilèges nécessaires, et bien il va vous falloir trouver un admin qui puisse venir saisir son mot de passe sur le prompt d'élévation. C'est le scénario "Over The Shoulder" (OTS). Votre compte est admin, vous devez alors accorder votre consentement pour l'exécution en mode élevé. C'est le scénario "Admin Approval Mode" (AAM).

Embêtant UAC? Ben oui, on est obligé de ralentir, avec tous ces prompts. C'est comme les chicanes aux entrées des agglomérations. Intéressant UAC? Absolument, ca fait des années qu'on parle de s'exécuter en non admin sur Windows. Aujourd'hui Windows Vista me l'offre et s'est supporté par PSS. Plus besoin de lire Margosis, et de tenter les gymnastiques à la DropMyRights.

Une sécurité à toute épreuve? Ben non. Ce n'est pas parce que vous roulez à 90 que vous n'aurez pas d'accident. Sous XP, une meilleure pratique était d'utiliser deux comptes. Un compte utilisateur pour son travail "normal", et un compte administrateur pour les taches d'administration. Cette pratique est tout autant recommandée sous Windows Vista, et UAC ne vise nullement à la rendre inutile.

Accro de la vitesse? Ne supporte pas les prompts? Y'a pas d'OS à protéger sur cette machine? Pas de problème, vous pouvez désactiver UAC, et rouler à donf. Vous prenez vos responsabilités. C'est la première chose qu'a fait Barbara, ma belle maman.

Pour le développeur d'applications Windows Vista, y'a moins le choix. Si vous voulez obtenir le logo Vista (ou plutôt si vous voulez éviter d'indiquer dans les conditions requises "Vista sans UAC"), vous devez prendre en compte UAC et votre application, y compris son installation, doit se comporter décemment lorsqu'UAC est activé. UAC comporte aussi toute une série de paramètres de configuration. La virtualisation des ressources fichiers et base de registre peut être active ou non, la signature des applications nécessitant élévation obligatoire ou non, etc… Votre application se comportera-t-elle correctement dans tous ces cas de figure?

J'ai eu l'occasion de présenter une session UAC pour les développeurs aux Techdays 07 dans laquelle j'aborde ce que doit savoir un développeur pour franchir le cap UAC dans les meilleures conditions météo. Les slides sont en ligne sur http://www.microsoft.com/france/vision/WebcastMsdnTechDays.aspx?EID=91e693df-a4cd-461b-a104-9fb5cae6aa51.

Pour le reste, je citerai l'article de mon collègue Jacques Massa sur MSDN http://www.microsoft.com/france/msdn/windowsvista/Migrer-une-application-vers-Windows-Vista.mspx, la référence UAC MSDN traduite http://www.microsoft.com/france/msdn/windowsvista/Developpement-applications-Windows-Vista-utlisant-le-Controle-des-comptes-utilisateur.mspx, ainsi que l'excellent post de Kenny Kerr http://weblogs.asp.net/kennykerr/archive/2006/09/29/Windows-Vista-for-Developers-_1320_-Part-4-_1320_-User-Account-Control.aspx. Et bien sûr, le blog UAC http://blogs.msdn.com/uac/.

Ouac, Ouac!