UAC (USER ACCOUNT CONTROL) - EXÉCUTER UNE APPLICATION EN TANT QU'ADMINISTRATEUR

Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
- - Dernière réponse : sp40
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
- 15 oct. 2013 à 17:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48992-uac-user-account-control-executer-une-application-en-tant-qu-administrateur-sous-windows-vista

Afficher la suite 
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
24 -
Même si ce code n'est pas vraiment du Delphi, il demeure très intéressant et les préconisations de Ni69 seront précieuses.
Merci pour ces informations.
cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5 -
Salut ni69,

d' abord laisse moi te féliciter pour cette source hyper simple du problème que je t' ai posé il n' y a que quelques heures de cela...

Les infos que tu donnes plus haut sont justifiées et permettent à ceux qui ne sont pas encore passés sous Vista de régler très facilement un des problèmes lié à l' UAC.

J' ai cependant 3 petites remarques:
-Il me semble qu' il y ait au moins 3 niveaux d' élévation des droits (ici level="requireAdministrator"), il serait interessant de les donner dans ton fichier en commentaire pour que chacun puisse régler l' élévation comme il le veut.
-De plus, l' inclusion de XPMan automatiquement me chiffone un peu.
-Ce que je cherche concrètement c' est l' élévation des droits lorsque je clique sur un bouton qui va executer du code qui necessite l' élévation des droits alors que ta source oblige l' élévation dès le démarrage de l' appli.

Je te mets 10/10 pour cet exemple concrêt car c' est la meilleure source (la plus simple) sur ce sujet que j' ai trouvé jusqu' ici.

Je suis d' accord avec DelphiProg, d' ailleurs, je ne t' ai pas demandé de poster cette source pour rien car je vais m' empresser de l' utiliser même si je m' attends à ce que tu me résouds le 3ème point de mes remarques.

J' aimerai aussi dire que les sources sur delphifr sont de plus en plus interessantes et ça fait plaisir!!! Je ne viens pas souvent car lorsque j' ai un peu de temps je travaille sur la 2ème version de mon pack de compos supervisé par Mr Laborde de chez CodeGear que je posterai courant 2009 (pas de crise de ce côté là!) ...

A+
sp40
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11 -
Bonjour,

Je dois sûrement mal m'y prendre, mais c'est quand même surprenant... J'ai désactivé il y a quelques temps l'uac sur mon poste vista (pro), car ça me saoulait de cliquer sur "continuer" à chaque fois que je voulais lancer une appli. J'ai donc vu en cette source la solution à ce problème mais :
- J'ai fait un petit exe avec un bouton qui affiche "ok" sur ma machine xp - delphi 5.
- J'ai compilé cet exe deux fois avec la ressource (Project1_uac.exe) et sans la ressource (Project1_ss_uac.exe)
- Je copie le tout sur mon poste vista, sur le bureau. Je constate que le project1_uac.exe a un bouclier windows ajouté sur son icone, alors que celle de project1_ss_uac.exe n'a pas bougé. Et, alors que project1_ss_uac.exe démarre sans problème, project1_uac.exe me demande de confirmer l'exécution de l'application !!!
- Question : que se passe-t-il ?
- Question subsidiaire : A quoi sert l'uac ?

Merci de vos réponses
Simon
sp40
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11 -
Relisant la description du source, je retire la question subsidiaire.
Est-ce que j'ai mal compris le but de cette source ? Est-ce que son but est non pas d'esquiver les contrôles mais de forcer le contrôle de l'application ?
ni69
Messages postés
1529
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
7 -
@SimonPelloquin:
"que se passe-t-il ?" -> rien d'autre que ce qui est prévu. Une élévation de privilèges est demandée à l'UAC, qui après confirmation d'un administrateur, lance l'application avec les droits d'administrateur.
"A quoi sert l'uac ?" -> tu as trouvé tout seul

Apparement tu as mal compris l'objectif de cette source. Relis bien la description :
"Il existe plusieurs moyens de DEMANDER cette élévation"
Si l'UAC pouvait être contournée aussi facilement, à quoi servirait-elle?
sp40
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11 -
Merci pour la réponse,

Si j'ai bien compris, en fait une "élévation" de privilèges permet à un utilisateur lambda de lancer l'appli avec les droits d'admin, et ainsi d'avoir accès par exemple à la base de registre etc. Mais alors, n'existe-t-il pas un moyen de mémoriser le fait que l'utilisateur a validé l'utilisation de l'appli en tant qu'admin une fois pour toute, de façon à ce qu'il ne soit pas obligé de valider cette fenêtre (continuer ou annuler) à chaque démarrage de l'appli ? Par ailleurs, pourquoi cette fenêtre s'affiche quand même sur un compte d'administrateur ?
ni69
Messages postés
1529
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
7 -
@Delphiprog : Merci!


@Mauricio: Merci également!
Pour répondre à ta question, les trois apramètres disponibles sont les suivants :
AsInvoker = l'application se lance avec les mêmes privilèges que le programme qui l'a exécutée (donc explorer la plupart du temps)
HighestAvailable = l'application s'exécute avec les plus hauts privilèges disponibles pour l'utilisateur connecté
RequireAdministrator = l'application n'exécutera avec les privilèges administrateurs UNIQUEMENT si un administrateur l'autorise

Dans le cas où l'on nécessite l'accès à des ressources protégées du système (registre, disque, ...), il faudra donc systématiquement choisir le troisième paramètre, à savoir RequireAdministrator (par précaution, car si l'application doit être distribuée, tous les comptes utilisateurs où elle sera exécutée n'auront pas par défaut les mêmes droits)

"l'inclusion de XPMan automatiquement me chiffone un peu" -> Je ne comprends pas vraiment... Si le code doit être exécuté sur Vista, alors autant qu'il prenne le style Vista non ?
Quoiqu'il en soit il suffit de supprimer le noeud <dependency> du Manifest pour enlever XPMan (après il faudra bien sûr recompiler la ressource!)

"Ce que je cherche concrètement c' est l' élévation des droits lorsque je clique sur un bouton qui va executer du code qui necessite l' élévation des droits alors que ta source oblige l' élévation dès le démarrage de l' appli" -> je regarderai ça :)


@SimonPelloquin:
"une élévation de privilèges permet à un utilisateur lambda de lancer l'appli avec les droits d'admin" -> c'est cela.
"moyen de mémoriser" -> Non, ce serait contraire au fonctionnement de l'UAC
"pourquoi cette fenêtre s'affiche quand même sur un compte d'administrateur" -> parceque quand l'UAC est activée, un compte administrateur est toujours protégé! Je te renvoie encore une fois aux documentations sur l'UAC
cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5 -
"Quoiqu'il en soit il suffit de supprimer le noeud <dependency> du Manifest pour enlever XPMan (après il faudra bien sûr recompiler la ressource!)
"
Merci !!! Le problème étant que si mon programme utilise XPMan et une dll avec des forms, celles-ci me renvoient une erreur quand je les ferme ?!

J' espère que tu trouveras comment élever (et pourquoi pas baisser) l' élévation que dans une certaine partie du code.

Pour répondre à Simon, ce n' est pas l' utilisateur qui a besoin d' une élévation des droits mais les programmes!!!

A+
sp40
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11 -
Merci encore pour les réponses,

A Mauricio : "Ce n' est pas l' utilisateur qui a besoin d' une élévation des droits mais les programmes!!!", ça, c'est ok.

A NI69 : Pardon d'être lourd, mais avec HighestAvailable, est-ce que le problème est le même ?

D'une manière générale, c'est quand même désagréable de passer systématiquement par cet écran de validation pour lancer une appli. Et je ne veux pas faire désactiver l'uac sur tous les postes de nos clients... C'est quoi la prochaine étape de chez MS ? un écran pour valider la validation ??? On s'en sort plus... J'ai vraiment du mal à saisir l'intérêt d'un tel dispositif sur des machines de particuliers (surtout que l'uac est installé par défaut). Il y a un moment où l'utilisateur doit savoir se servir d'une machine et doit pouvoir lancer ses programmes de tous les jours sans être obligé de passer par des contrôles de la sorte, non ?
ni69
Messages postés
1529
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
7 -
@SimonPelloquin: même avec HighestAvailable sur un compte admin tu auras la validation.
Rappelle-toi encore ce que j'ai cité tout à l'heure : "Il existe plusieurs moyens de DEMANDER cette élévation"
"J'ai vraiment du mal à saisir l'intérêt d'un tel dispositif sur des machines de particuliers" -> nombre de risques sont évités grâce à cela.
Dans Windows Se7en le niveau de contrôle de l'UAC sera paramétrable.
sp40
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11 -
Merci beaucoup pour tous ces renseignements et pour ta patience. J'arrête là.

"Dans Windows Se7en le niveau de contrôle de l'UAC sera paramétrable." pfff, je sais pas si je vais pas me mettre à développer sous linux...
cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5 -
Salut Simon,

il est évident qu' avec Vista, il est plus difficile d' attraper un virus grâce à l' UAC, moi je suis pour car ce n' est pas si enervant que ça et que nous programmeurs, on s' habitue à éviter de toucher à certaines zones du Regitry par exemple pour justement, éviter les messages dŽélévation de droits au démarrage de nos applis...

Par contre, l' UAC ce n' est pas pour les débutants comme tu le penses, qui, auront à mon avis la mauvaise habitude de permettre l' execution de tout et n' importe quoi car ils ne savent pas distinguer l' execution d' un programme voulu d' une saleté de virus!!!

A+
sp40
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11 -
A Mauricio :

D'accord, l'idée est bonne... mais il manque un peu d'intelligence la dedans... Du genre quand l'utilisateur a déjà lancé une bonne dizaine de fois l'application, l'uac pourrait en tenir compte (sauf bien sûr si l'appli est soudain vérolée aarrrgghhh, encore qu'on peut voir si l'exécutable a été modifié)
J'ai un peu cherché sur le net et, apparemment, c'est aussi un peu fait pour décourager les developpeurs de toucher aux éléments vitaux de l'OS. D'où mon nouveau post sur le forum : comment associer une icone sans passer par la base de registre. pfiou... ça fait mal à la tête tout ça.
keplin
Messages postés
28
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
3 décembre 2010
-
:) un an plus tard ou presque

j'avais juste envie de faire une remarque concernant tout ceci...

1) la seule réelle parade contre les virus sur vista c'est un bon antivirus

2) si on a le malheur d'en choper un qui n'est pas reconnue par l'antivirus c'est le bordel
ses codes malveillants on tous les droits, écrire sur la base de registres ouvrir des
ports effacer des fichiers etc. ça veux dire donc que grâce a du code on peut
contourner UAC... alors pourquoi nous emmerder avec ça alors que, comme dit plus haut
la plupart des utilisateurs cliquent a tout va pour accepter l'exécution de n'importe
quel programmes.

il y a moyen via je ne sais quel code de passer outre l'UAC , et ceux qui pour des
raisons tout a fait bienveillantes veulent faire une application qui sauvegarde une
petite donné dans la br ou veullent changer l'heure système doivent chercher mille et
une façon pour y arriver ou cliquer.. "oui j'accepte l'exécution" pffff

c'est du n'importe quoi.............
Ulixes2
Messages postés
10
Date d'inscription
lundi 8 décembre 2008
Statut
Membre
Dernière intervention
11 octobre 2011
-
Bonjour,

Etant un débutant, je dois surement mal m'y prendre, mais l'ajout de ce code n'a strictement rien changé. En effet sous vista au lancement de l'appli, l'UAC ne me demande de pas de valider comme quoi je suis en mode admin.

Question subsidiaire, techniquement cette astuce devrait aussi fonctionner sous Windows 7

Merci d'avance
ni69
Messages postés
1529
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
7 -
@Ulixes2 : As-tu bien suivi mes indications (précédées de "REMARQUES IMPORTANTES") dans la partie "Conclusion" de cette page ?

Ce code est également pleinement compatible avec Windows 7.
Ulixes2
Messages postés
10
Date d'inscription
lundi 8 décembre 2008
Statut
Membre
Dernière intervention
11 octobre 2011
-
NI69: En effet, j'avais bien les toutes tes remarques et j'avais enlevé le XPMan des uses comme tu l'indiquais et je suis sous Delphi7. Peux être ai je mal fais "l'association" au fichier .res. Il n'y a bien que cette ligne à inclure : {$R 'Resources\UAC_Manifest.RES'}. Il n'y a rien a modifier aux fichiers fournit dans ton dossier ressources?

Merci d'avance.
ni69
Messages postés
1529
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
7 -
Après vérification de la validité du code ici présent sur plusieurs systèmes Windows Vista & Seven, il semble que le problème soit présent uniquement de ton côté.
As-tu bien configuré l'UAC (sous Seven) pour que l'avertissement s'affiche ? Le code source d'exemple "RunAsAdmin" s'exécute-t-il correctement chez toi ?

Veille à bien retirer toute mention de XPMan dans l'intégralité des clauses uses de ton projet. De même, si ton projet inclus d'autres ressources, veille à ce qu'il n'y ait pas de conflit.

L'ajout de
{$R 'Resources\UAC_Manifest.RES'}
est en effet la seule chose à réaliser si tant est que le fichier 'Resources\UAC_Manifest.RES' existe bien.
logisam
Messages postés
1
Date d'inscription
samedi 17 juin 2006
Statut
Membre
Dernière intervention
1 avril 2010
-
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
cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5 -
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+
cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5 -
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+
kfjm
Messages postés
6
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
30 juillet 2014
-
Punaise, MERCI, Merci pour le fichier Res ! Depuis le temps que je cherche sur les Forums pour mettre un exe en Admin !
sp40
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
11 -
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...