Comment créer un fichier batch pour exécuter cmd en tant qu'administrateur

j'ai besoin d'exécuter un fichier batch qui doit enregistrer une DLL. L'enregistrement DLL est un échec parce que le fichier Batch ne démarre pas l'invite de commande "administrateur".

Est-il possible de démarrer le "Invite De Commande"administrateur via le fichier batch.

Environnement: Win7 / Vista

20
demandé sur Colin Brock 2012-07-17 18:44:14

12 réponses

vous pourriez avoir à utiliser un autre fichier batch en premier pour lancer le second avec des droits d'administrateur.

Dans la première utilisation

runas /noprofile /user:mymachine\administrator yourbatchfile.bat

en lisant davantage, vous devez être en mesure de taper le mot de passe à l'invite. Vous ne pouvez pas fermer le mot de passe car cette fonctionnalité a été verrouillée pour des raisons de sécurité.

vous pourriez avoir plus de chance avec psexec.

6
répondu Bali C 2012-07-17 16:23:00

ce script fait l'affaire! Il suffit de coller dans le haut de votre fichier bat. Si vous voulez revoir la sortie de votre script, ajoutez une commande "pause" au bas de votre fichier batch.

Ce script est maintenant légèrement modifié pour supporter la ligne de commande args.

@echo off
:: BatchGotAdmin
::-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"="
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
::--------------------------------------

::ENTER YOUR CODE BELOW:
25
répondu Lokesh Kumar 2016-06-19 10:22:21

(Ceci est basé sur la réponse de@DarkXphenomenon, qui a malheureusement eu quelques problèmes.)

vous devez inclure votre code dans ce wrapper:

if _%1_==_payload_  goto :payload

:getadmin
    echo %~nx0: elevating self
    set vbs=%temp%\getadmin.vbs
    echo Set UAC = CreateObject^("Shell.Application"^)                >> "%vbs%"
    echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%"
    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
goto :eof

:payload
    echo %~nx0: running payload with parameters:
    echo %*
    echo ---------------------------------------------------
    cd /d %2
    shift
    shift
    rem put your code here
    rem e.g.: perl myscript.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
goto :eof

ceci fait que le fichier batch s'exécute lui-même en tant qu'utilisateur surélevé. Il ajoute deux paramètres au code privilégié:

  • mot payload, pour indiquer qu'il s'agit d'un appel de charge utile, c'est-à-dire déjà élevé. Autrement cela ouvrirait de nouveaux processus et plus.

  • chemin du répertoire où le script principal a été appelé. En raison du fait que Windows toujours début du cmd élevé.exe dans "%windir % \system32", il n'y a pas de moyen facile de savoir quoi le chemin d'origine a (et conserver la capacité de copier votre script sans toucher le code)

Remarque: Malheureusement, pour une raison quelconque shift ne fonctionne pas pour les %*, donc si vous avez besoin passer arguments, vous devrez recourir à laide de la notation que j'ai utilisé dans l'exemple (%1 %2 %3 %4 %5 %6 %7 %8 %9), ce qui ramène également à la limite de maximum de 9 arguments

7
répondu Alois Mahdal 2017-05-23 11:47:08

Appuyez sur Ctrl+Maj et double-cliquez sur un raccourci pour exécuter un processus élevés.

Fonctionne à partir du menu démarrer.

4
répondu caractacus 2017-09-21 07:28:16

cela fonctionne pour Me'in Windows 7 à 10 avec des paramètres et aussi kick application de démarrage ou le fichier de n'importe où(y compris le navigateur) et aussi l'accès au fichier de n'importe où, remplacer (votre script de fournée ici ancre) avec votre code ,Cette solution peut aider :)

     @echo off

     call :isAdmin

     if %errorlevel% == 0 (
        goto :run
     ) else (
        echo Requesting administrative privileges...
        goto :UACPrompt
     )

     exit /b

     :isAdmin
        fsutil dirty query %systemdrive% >nul
     exit /b

     :run
      <YOUR BATCH SCRIPT HERE>
     exit /b

     :UACPrompt
       echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
       echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs"

       "%temp%\getadmin.vbs"
       del "%temp%\getadmin.vbs"
      exit /B`
3
répondu krishnakumar sekar 2015-12-12 00:20:54

pour empêcher le script de tomber en panne lorsque le fichier script se trouve sur un lecteur Non système (c:) et dans un répertoire avec des espaces.

Batch_Script_Run_As_Admin.cmd

@echo off
if _%1_==_payload_  goto :payload

:getadmin
    echo %~nx0: elevating self
    set vbs=%temp%\getadmin.vbs
    echo Set UAC = CreateObject^("Shell.Application"^)                >> "%vbs%"
    echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%"
    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
goto :eof

:payload

::ENTER YOUR CODE BELOW::   





::END OF YOUR CODE::

echo.
echo...Script Complete....
echo.

pause
3
répondu meffect 2017-10-06 18:47:06

vous pouvez utiliser un raccourci qui renvoie au fichier batch. Il suffit d'aller dans Propriétés pour le raccourci et de sélectionner Avancé, puis "exécuter en tant qu'administrateur".

alors il suffit de faire le fichier batch caché, et lancer le raccourci.

de Cette façon, vous pouvez même définir votre propre icône du raccourci.

1
répondu jojois74 2013-07-05 22:38:33

Peut-être quelque chose comme ceci:

if "%~s0"=="%~s1" ( cd %~sp1 & shift ) else (
  echo CreateObject^("Shell.Application"^).ShellExecute "%~s0","%~0 %*","","runas",1 >"%tmp%%~n0.vbs" & "%tmp%%~n0.vbs" & del /q "%tmp%%~n0.vbs" & goto :eof
)
1
répondu dev5er6 2014-05-23 09:34:59

Voici une version plus simple du même fichier.

@echo off
break off
title C:\Windows\system32\cmd.exe
cls

:cmd
set /p cmd=C:\Enter Command:

%cmd%
echo.
goto cmd
1
répondu gaws 2017-09-21 07:26:23

comme l'utilisateur 2549366 l'a suggéré auparavant, "vous pouvez utiliser un raccourci qui renvoie au fichier batch."mais dans L'onglet Propriétés->compatibilité du raccourci, l'exécution en tant qu'administrateur peut être désactivée.

alors à la place, vous cliquez avec le bouton droit de la souris sur votre "fichier".bat-raccourci" puis allez à->Propriétés -> onglet Raccourci - > avancé et là vous pouvez cliquer Exécuter en tant qu'administrateur. Après cela, Vous pouvez exécuter le raccourci.

0
répondu bajla 2015-12-20 09:10:33

cela peut être une solution, j'ai fait quelque chose de similaire, mais celui-ci ne semble pas fonctionner par exemple, si la fonction nécessaire requiert des privilèges d'administrateur, il devrait vous demander de redémarrer en tant qu'administrateur.

@echo off
mkdir C:\Users\cmdfolder

if echo=="Access is denied." (goto :1A) else (goto :A4)

:A1
cls 
color 0d
echo restart this program as administator

:A4
pause
-1
répondu BatchFileFreak 2013-11-08 10:23:51

faites un texte en utilisant le bloc-notes ou n'importe quel éditeur de texte de votre choix. Ouvrez bloc-notes, écrivez cette courte commande " cmd.exe " sans la citation et la sauvegarder en cmd.chauve.

cliquez sur cmd.chauve-souris et choisissez "exécuter en tant qu'administrateur".

-3
répondu pango 2017-09-21 12:26:27