Uac (user account control) - exécuter une application en tant qu'administrateur sous windows vista


Description

L'UAC (User Account Control) est une protection inhérente à Windows Vista, permettant de protéger le système contre toute action potentiellement néfaste. Parfois cependant des programmes nécessitent une élévation de privilèges pour garantir leur bonne exécution (accès à des répertoires système, modification de certains paramètres de Windows, accès direct en lecture/écriture au disque système, etc...).

Il existe plusieurs moyens de demander cette élévation :

-> en cochant la case "Exécuter en tant qu'Administrateur" dans l'onglet "Compatibilité" des propriétés de l'exécutable
Mais alors si l'on veut distribuer le programme sur internet ou sur d'autres types de supports, chaque copie devra être traitée ainsi, ce qui est loin d'être réalisable en pratique

-> tout simplement en incluant dans le nom de votre exécutable un des mots "install", "setup" ou bien "update"
Mais alors tout changement du nom du fichier mènerait vers la perte de l'automatisation du processus de requête.

-> en incluant un Manifest à l'intérieur même de l'exécutable, par l'intermédiaire d'un fichier de ressource (.res)
C'est cette méthode qui est présentée ici. Le fichier RES déjà compilé est également fourni dans le zip.

Note : Cette source n'a pas pour objectif de faire une présentation exhaustive de l'User Account Control de Windows Vista. Cela serait totalement inutile étant donné l'existence de nombreux sites dispensant des informations sur le sujet. Vous pouvez par exemple aller voir sur MSDN si vous désirez en savoir davantage sur l'UAC :
http://msdn.microsoft.com/en-us/library/bb384608.aspx

Source / Exemple :


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="*"
    name="UAC_Elevation_Prompt"
    type="win32"/> 
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
</assembly>

Conclusion :


!!!!! ATTENTION REMARQUES IMPORTANTES !!!!!

VEILLEZ A RETIRER "XPMan" DE USES POUR ASSURER LE BON FONCTIONNEMENT DE LA GESTION DE L'UAC

En pratique, l'ajout de XPMan provoque la création d'un autre Manifest à l'index 1, qui RECOUVRE celui qui est mis en place ici par l'intermédiaire du fichier de ressources. Ainsi, la gestion de l'UAC est éliminée !

Remarque importante 1 : J'ai inclus les valeurs du Manifest produit par XPMan dans celui de gestion de l'UAC. Ainsi, le style XP/Vista des applications sera conservé malgré l'absence de composant XPMan.

Remarque importante 2 : Si vous avez une version antérieure à Delphi 7 et que vous avez l'habitude d'ajouter en ressource un fichier comme "WindowsXP.res", "XPMan.res", sachez que cet avertissement vous concerne également et que vous devez supprimer ces fichiers (ils produisent le même effet que l'ajout de XPMan dans uses).

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.