(modifié le 7 janvier 2015 à 16:29)

Avec l'implémentation de l'UAC dans Windows le lancement de fichiers batch est parfois chaotique. Doit-on lancer le batch en tant qu'utilisateur ou en tant qu'administrateur ? On peut l'environnement de l'utilisateur en administrateur, lecteurs réseaux y compris.

batch-execute-admin

Comment savoir si le script batch a été lancé avec les permissions administrateur ? Voici une solution qui fonctionnera sous Windows Vista, 7, 2008, 2008 R2 (et probablement Windows 8 et Server 2012 mais non testé) :

Explications

En tentant de retirer l'attribut de dossier caché (avec ATTRIB) sur un répertoire protégé du système on analyse le retour de la ligne de commande qui indiquera "Accès refusé - C:\Windows\System32". Dans ce cas la chaîne "system32" sera présente. J'aurai pu analyser le mot "refusé" mais le script ne fonctionnerait qu'avec un système en langue française, grâce à cette astuce il est multilingue et l'emplacement du dossier "windows" n'est pas un problème non plus, remplacé par %windir%

Si le script est exécuté en tant qu'Administrateur alors rien n'est retourné par FINDSTR.

Simple, pratique et efficace !

Et si vous voulez forcer l'exécution du script avec le droit admin sans que l'utilisateur le relance, optez pour ce script:

note : il existe une autre méthode basée sur "net session", encore plus courte.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter