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

5/5 (23 avis)

Vue 15 716 fois - Téléchargée 1 610 fois


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

Ajouter un commentaire Commentaires
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
15 oct. 2013 à 17:51
Hello,
Comprends pas... Cette source marchait à merveille, et là, ça ne marche plus, le programme démarre sans demander l'élévation... Elle m'est demandée si je l'exécute en mode de compatibilité pour windows XP SP3. Testé sur mon poste Windows 7 pro et sur un serveur en Windows Server 2008 R2...
kfjm Messages postés 6 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 juillet 2014
19 avril 2013 à 20:51
Punaise, MERCI, Merci pour le fichier Res ! Depuis le temps que je cherche sur les Forums pour mettre un exe en Admin !
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
20 avril 2010 à 13:28
En fait ma question est de savoir si on peut changer "1 24" par un autre indice/type pour que l' on puisse incorporer plusieurs *.res, je n' y suis pas arrivé pour l' instant.

A+
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
20 avril 2010 à 13:26
Salut ni69,

j' ai profité de ton source pour utiliser un activeX sans l' enregitrer au préalable sous Windows.
Par contre, j' ai dû copier une partie de ton code (celle concernant l' activation des thèmes) car sinon les thèmes n' étaient plus activés.

N' y a t- il pas un moyen de créer une resource pour l' élévation des droits independemment du fait que l' on choisit d' utiliser les thèmes?

A+
logisam Messages postés 1 Date d'inscription samedi 17 juin 2006 Statut Membre Dernière intervention 1 avril 2010
1 avril 2010 à 08:55
Salut tout le monde, excusez moi de vous posez cette question, je n'ai aucune connaissance du delphi moi je suis developpeur C#, j'ai eu besoin de cette source dans le cadre d'un travail personel, cependant je dois mal my prendre, j'ai telecharge cette source et jai installe CodeGear RAD studio et compiler directement le code sous windows 7 user limited je recoit cette errue :
Unable to create process : The requested operation requires elevation.

Est ce quelqu'un pourai m'aider pleassse.

Merci d'avance

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.