Privilèges administrateur sous Windows 7

ArthurAuguste Messages postés 107 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 17 février 2018 - 26 juin 2011 à 16:31
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 6 juil. 2011 à 13:32
Bonjour,
Je suis sous Windows XP, mais je voudrais qu'en exportant mon appli sur un ordi sous Windows 7, elle y fonctionne avec les privilèges administrateur (sans la lancer par clic droit puis sélection mode administrateur) en la lançant par simple double clic. Je suis allé voir le site de msn ainsi que quelques discussions sur Internet et voila ci-dessous ce que j'ai fait:
Création du fichier manifest.xml ci-dessous:
//*******************************************************
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>


<description>elevate execution level</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>

//********************************************************
Création d'un fichier manifest.rc ci-dessous:
//********************************************************
#include <windows.h>
#ifndef CREATEPROCESS_MANIFEST_RESOURCE_ID
#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
#endif
#ifndef RT_MANIFEST
#define RT_MANIFEST 24
#endif
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "manifest.xml"
//**********************************************************
Compilé mon appli mxj.cpp avec Borland bcc32.exe
Compilé mon appli manifest.rc avec Borland brc32.exe
Linké mxj.obj et manifest.res avec Borland ilink32.exe
Aucune erreur de compile, aucune erreur de linkage.
J'ai ensuite lancé mon appli mxj.exe, elle s'exécute normalement sans aucune différence avec avant, j'ai déjà dit que j'étais sous Windows XP version familiale et que je n'ai pas besoin de privilèges car je n'ai pas de virtualisation et j'avais déjà accès sans protection particulière aux registres. Je vérifiais seulement que mon appli avec maintenant le fichier manifest intégré marchait toujours.
Maintenant deux questions:
1.- Mon fichier manifest est-il correct, car comme je n'ai fait que recopier à droite à gauche je n'ai aucune idée si ma syntaxe est correcte et si elle sera efficace ? (je n'ai par exemple aucune idée de la validité des références placées derrière les deux paramètres xmlns ou version)
2.- Si j'exporte mon mxj.exe sur un ordi en windows 7 est-ce qu'il fonctionnera avec le privilège administrateur par simple lancement par double-clic (pas de clic droit) et sans avoir besoin de le recompiler sur cet ordi en windows 7 ? (pour info mon appli mxj.exe fonctionnait déjà sous windows 7 avant d'intégrer le fichier manifest mais à condition de le lancer par clic droit et privilèges administrateur).
Merci

6 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
28 juin 2011 à 02:13
salut,

Si il était si simple d'acquerir les privilèges admin sous un S.E., il serait inutile de les avoir. C'est le login qui determine les privilèges. De plus, un mot de passe pourrait être nécessaire. Obtenir moins de droits est par contre possible.

@++
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
5 juil. 2011 à 05:23
Salut,
1- Le contenu de ton fichier manifest semble bon. J'utilise une autre variante pour éviter le plantage (reboot) du système à cause d'un bug sous XP SP2.
2- Sous Windows 7, seul l'administrateur racine, désactivé par défaut, a tous les privilèges. Les autres membres du groupe "Administrateurs" ont besoin d'élever les privilèges pour effectuer certaines tâches. Grâce à la présence du manifest inclus comme ressource dans l'exécutable et en lançant ce dernier (par double-clic par exemple), Windows affiche la boite UAC et attend que l'utilisateur accepte ou refuse l'élevation des privilèges. Le lancer depuis un compte du groupe "Utilisateurs" fera apparaitre la boite login + mot de passe d'un administrateur. Pas besoin de recompiler pour Windows 7. Je vais chercher parmi les codes source de mes installateurs et en adapter un pour le déposer sur le site dès que j'ai un peu de temps libre.
0
ArthurAuguste Messages postés 107 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 17 février 2018
5 juil. 2011 à 22:33
Bonjour,
Merci pour vos réponses, je viens d'avoir le retour des essais que la personne qui a le micro sous Windows7 a fait avec le .exe compilé chez moi sous XP avec inclusion du fichier manifest.
Résultat: Presque tout marche: pas de question posée à l'utilisateur lorsqu'il lance le .exe par simple double clic, pourtant le .exe va modifier les registres de windows en particulier pour s'y mettre lui dans les registres afin d'être automatiquement lancé à chaque redémarrage du micro.
Pas de question non plus posée à l'utilisateur quand le programme est ensuite lancé automatiquement par windows à la relance du micro.
Si on s'arrêtait là tout serait parfait.
Seul petit hic, après une relance auto par windows, il y a un moment où le .exe va modifier un fichier qui se trouve sous c:/program files (x86)/ (adresse réelle, pas virtuelle) et là windows sort le message: "Voulez-vous autoriser le programme provenant d'un éditeur inconnu à apporter des modifications à cet ordinateur" en donnant le nom du programme ainsi que le nom du fichier. Avant la relance du micro le .exe avait aussi modifié ce même fichier et là windows n'avait pas posé de question !
Je ne sais pas si on peut contourner ce message tout en laissant le fichier modifié au même endroit, sinon, je pense qu'on doit pouvoir l'éviter en mettant le fichier sous c:/utilisateurs/....
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
6 juil. 2011 à 01:18
Ce message "Voulez-vous autoriser ..." est affiché par la boite UAC qui permet justement d'élever les privilèges de l'exécutable en cliquant sur "Oui". Normalement, seule la présence du manifest provoquera l'apparition de cette boite sous Vista/7 au lancement de l'exe. Je trouve étrange qu'elle ne soit pas affichée lors du lancement par double clic.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ArthurAuguste Messages postés 107 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 17 février 2018
6 juil. 2011 à 08:03
Oui, mais j'ai besoin du manifest, sinon lorsque le .exe est lancé automatiquement au démarrage de windows il va chercher le fichier à modifier dans l'adresse virtuelle au lieu d'aller le chercher là où il faut (à l'adresse réelle sous program files\)! Si la question n'est pas posée lors du lancement manuel par double clic c'est peut-être parce que c'est à ce moment là que le .exe crée le fichier qu'il modifie ensuite.
A+
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
6 juil. 2011 à 13:32
Bien sûr le manifest est obligatoire pour élever les privilèges. Je veux dire que même si ton exécutable ne fait rien, la boite UAC devra être affichée juste à cause de la présence du manifest.
Non, normalement, pour la création et la modification de ton fichier, ton exécutable aura besoin des privilèges requis.
0
Rejoignez-nous