Accueil > Tutoriels > Tutoriel – Forcer l’exécution d’un script batch en administrateur

Tutoriel – Forcer l’exécution d’un script batch en administrateur

On se retrouve aujourd’hui pour le tout premier article, tutoriel de la catégorie « développement & scripting » que nous venons de créer.

Présentation de la catégorie

Après plusieurs réflexions avec les membres d’ElectroGen’, nous avons décidé de partager nos connaissances dans le domaine du scripting et du développement web. En effet, nous sommes plusieurs membres (Florian.L, Alexandre.P, et moi même Jérémy.B) en formation dans le domaine des réseaux informatiques, serveurs, et tout ce qu’on le peut retrouver dans le parc informatique d’une entreprise. De plus, il y a également Julien.N qui quant à lui est Administrateur Système dans une entreprise. Nous allons donc vous guider via des articles en forme de tutoriels pour vous faire découvrir des scripts qui permettent d’administrer des machines dans un parc informatique notamment du Windows Server via du batch et plus récemment via du PowerShell. Nous espérons que cette toute nouvelle catégorie plaira à nos visiteurs. 🙂

Ce n’est pas tout de parler, mais il faudrait passer au tutoriel non ?

Tutoriel

Comme indiqué dans le titre de cet article, je vais vous présenter quelques lignes afin de forcer l’exécution d’un script batch (.bat) en mode administrateur sous Windows Vista, Windows 7 et Windows 8.

En effet, depuis Windows Vista, Microsoft a intégré l’UAC (User Account Control), un contrôle de compte utilisateur qui permet à l’utilisateur d’être averti lorsque par exemple application s’installe sur votre ordinateur. Cet UAC est utile si vous êtes connecté sur un compte utilisateur n’ayant pas de droit d’administrateur et que vous avez besoin d’exécuter une application en administrateur.

UAC Windows

Le code ci-dessous va vous permettre de déclencher l’UAC de Windows avant de poursuivre et d’exécuter les commandes présentes dans votre fichier .bat. Une fois connecté avec votre compte administrateur (seul le compte administrateur sera autorisé) votre script batch démarrera avec des permissions élevées.

Il est très utile de procéder ainsi, puisqu’il ne sera plus nécessaire d’effectuer un clic droit puis « Exécuter en tant qu’administrateur ».

Le code

Pour forcer l’utilisation de l’UAC, il suffit de coller le code présent ci-dessus dans les premières lignes de votre script batch. Par la suite, libre à vous de saisir les lignes de code que vous souhaitez exécuter en tant qu’administrateur par exemple :

L’outil XCOPY permet de démarrer une copie. Le premier chemin est le dossier de source (le dossier/fichier que nous voulons copier) et le second, le dossier de destination (le dossier vers lequel le dossier/fichier de source sera copié).

J’espère que ce petit bout de code vous sera autant utile qu’il l’est pour moi. Personnellement, je l’utilise très fréquemment au travail pour administrer mes PCs clients Windows 7. En cas de question, n’hésitez pas à me contacter via les commentaires ! Je serais ravi de vous aider 😉

A propos de Jérémy.B

Jérémy.B
Possédant un peu de sang de geek, j'aime le monde High-Tech, partager mes connaissances et mon savoir-faire dans le domaine afin d'aider les gens. Je suis également développeur web avec une préférence pour les produits Apple.

21 commentaires

  1. Bonsoir :).

    Pas mal le tutoriel, c’est effectivement une fonctionnalité très intéressante qui ne nécessite pas de manipulations hasardeuses de la part de l’utilisateur.
    Et c’est aussi sympa de proposer ce genre de tutoriel, ça en plaira sans doute plus d’un ;).

    • Jérémy.B

      Bonsoir !

      Tout à fait, mais c’est surtout utile si l’on partage un script avec son équipe et que le script en question doit être lancé en admin pour X raisons, ça évite de répéter « Il faut le lancer en admin ». Avec cette méthode, le système oblige l’utilisateur à saisir son compte admin. 🙂

      Merci du compliment, ça fait plaisir !

      • Pas de problème ;).

        En effet, on gagne du temps et ça évite de nombreuses erreurs. Et puis l’informatique commence par la base, alors c’est bien de ne pas l’oublier.

  2. Bonjour,

    Je viens de lire avec intérêt votre tutoriel, petit Batch sympa mais difficile à comprendre pour un néophyte.

    Même moi étant de la partie depuis de nombreuses années j’ai un peu de mal à me rappeler, je pense qu’il faudrait expliquer certaines commandes et leurs rôles

    par exemple :

    >nul 2>&1 -> rediriger la sortie d’erreur
    NEQ -> différent de
    exit /B -> Sortie script
    %~dp0 -> dossier hébergeant le batch
    %CD% -> chemin courant

    😉 Même mon JUJU à du mal

    @+ et continuez, ça en plaira sans plus d’un

  3. Bonjour

    Merci pour ce script, il pourrait répondre entièrement à mon problème.
    Mais, un an a passé, je suis sous Windows 8.1 et UAC n’est pas reconnu comme commande interne par Windows.
    Est-e que UAC est encore opérationnel? Comment ?
    Et sinon comment réactualiser votre script?

    Merci quand même j’ai appris beaucoup de choses à la lecture.
    Claude

  4. bonjour je souhaiterai savoir comment peut ton faire pour executer chkdsk dans cmd sans être administrateur

    cordialement,
    darcking

  5. Personnellement j’ai effectué un simple test sur une session local avec les droits de base et windows m’a demandé les mot de passe de mon compte principal (je suis sur Win10).
    J’aimerai aussi vous demander un petit rensegnement, étant au lycée les sessions sur les ordi son plus hard à cracker que dans mon ancien collège, donc est-ce que ce batch fonctionnerai sur une session TRES restreinte (du style où le clic droit à été rendu inoppérent) sur des machines sous Win7/Winxp ?
    Bien que ce soit de fausses versions de Windows, elles ont été vachement bien retapées et sont pour l’instant presque à toutes épreuves.

    Voila, je vous remerci pour cet exellent tuto et je recommande beaucoup la lecture de cet article.

  6. Bonjour,
    ce script fonctionne très bien. Je l’ai intégré dans un .bat (qui installe 3 programmes) qui ne fonctionnait plus après être passé de Win7 32 à Win7 64.
    Mon problème vient du fait que ce .bat est intégré dans une installation plus complexe (faite avec InnoSetup) qui installe de nombreux fichiers et programmes (Apache, MySQL) en plus de ceux de mon script. Lorsque je lance l’installeur, Win64 lance un contrôle des droits sur tous les fichiers en ouvrant une fenêtre DOS. Il y a des milliers de fichiers, j’ai donc dû arrêter l’installation en fermant ma session.

    Y aurait-il un moyen de restreindre le contrôle des droits à mon seul .bat afin qu’il n’affecte pas le reste de l’installation ?

  7. Salut,

    Je viens de tester ce script sur Windows 8.1 et ca fonctionne parfaitement.

    Merci beaucoup!!

  8. Khaled SADDEDINE

    Bonjour et merci pour ce script,
    il répond partiellement à mon problème.
    Je voudrais de déployer un .bat pour qu’il soit exécuté par des utilisateurs avec droits limités afin de démarrer le service spooler d’impression.
    ******
    @echo off
    pause
    net start spooler
    pause
    ******
    Donc comment renseigner le mot de passe admin dans le fichier pour qu’il ne soit pas demandé à l’exécution.

  9. Bonjour,
    JE suis sous Windows 7 et je souhaite effectuer un regedit /s
    Mon but est de modifier la page de démarrage de internet explorer
    J’ai testé votre script dans un bat mais ce n’est pas concluant en fait.
    En activant l’echo, le programme sort avec l’exit /b sans continuer en dessous où j’ai rajouté mon regedit /?…
    J’ai retiré l’instruction exit /B pour que le code continue, cette fois le regedit est bien exécuté mais rin ne se passe et les clés de registres ne sont pas créés: J’ai manué quelque chose??

    • Jérémy.B

      Bonjour,

      Voici la commande permettant de mettre à jour la page d’accueil IE

      REG ADD « HKCU\Software\Microsoft\Internet Explorer\Main » /V « Start Page » /D « http://www.google.com/ » /F

  10. Bonjour,

    Juste pour dire merci pour cette astuce qui me rend bien service.

  11. Bonjour,

    Votre script aurais partiellement répondu à mon problème sauf que par défaut on coupe l’UAC et tout est géré dans l’AD.
    Par contre je recherche comment forcer un .bat à se lancer en administrateur sous une session à droits restreints en silencieux (afin de rajouter des DNS dans les propriétés réseaux).
    Donc avec les code administrateurs fournis je ne sais comment en réponse au .bat ou je ne sais comment (désolé je suis un super novice en script et en informatique en général)

    J’ai le script de base qui fonctionne sur les comptes administrateurs mais je suis seul pour gérer 1000 machines et c’est assez long de passer sur chaque pour lancer le script ^^’

  12. @echo off
    title Test Admin
    mode con: cols=90 lines=30
    Color 0F
    cls
    :lunch
    attrib %windir%\system32 -h | findstr /I « system32 » >nul
    IF %errorlevel% neq 1 (
    echo.
    echo Ce script doit etre lance en Administrateur.
    echo.
    pause
    exit
    )
    echo ON EST EN ADMIN, PLACER LA SUITE DU SCRIPT ICI!
    pause
    exit

    5x plus sinple!!!

  13. Loïc Ngou Noubosse

    bonjour chez moi on me renvoie l’erreur , « le scripthost est desactive sur votre machine ».

  14. Bonjour,

    Je voulais vous remercier pour ce petit bout de code 🙂

    Je l’ai utilisé pour un script car j’avais besoin de le lancé avec les droits d’administrateur, nottament pour désactiver les services ISS de windows 10, nécessaire pour utiliser WampServeur 3.

    Votre code est certainement la partie du script que j’ai assemblé la plus technique ^^

    Merci encore.

    Très bonne journée !