Comment exécuter un fichier de commandes à partir d'un autre fichier de commandes avec des droits d'administrateur?
J'ai essayé la commande RUNAS , mais elle nécessite le mot de passe de l'administrateur.
Je recherche une alternative pour exécuter un fichier de commandes en faisant un clic droit dessus et en cours d'exécution en tant qu'administrateur. Je veux l'automatiser à partir d'un autre fichier de commandes.
Sous Windows 7:
Créer un raccourci vers ce fichier de commandes
Faites un clic droit sur ce fichier de raccourci et choisissez Propriétés
Cliquez sur le bouton Advanced
pour trouver une case à cocher à exécuter en tant qu'administrateur.
Vérifiez la capture d'écran ci-dessous
Vous pouvez utiliser PowerShell pour exécuter b.bat en tant qu’administrateur à partir de a.bat
:
set mydir=%~dp0
Powershell -Command "& { Start-Process \"%mydir%b.bat\" -verb RunAs}"
Il invitera l'utilisateur avec une boîte de dialogue de confirmation. L'utilisateur choisit YES
, puis b.bat
sera exécuté en tant qu'administrateur.
Utilisation
runas /savecred /profile /user:Administrator whateveryouwanttorun.cmd
Il demandera le mot de passe la première fois seulement. Il ne vous demandera plus de mot de passe, sauf si le mot de passe est changé, etc.
Mettez chaque ligne dans cmd ou tout le thème dans le fichier batch:
@echo off
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)
"Put your command here"
Ça fonctionne bien pour moi.
Runas.exe ne fonctionnera pas ici. Vous pouvez utiliser VBScript pour appeler le verbe de shell "Exécuter en tant qu'administrateur". Les groupes électrogènes d’élévation contiennent un fichier de commandes qui vous permet d’appeler une commande élevée:
elevate
cmd.exe
Si vous essayez d'appeler un Windows UAC Prompt (celui qui met tout l'écran en noir et vous demande si vous accordez des privilèges d'administrateur à la tâche suivante), RUNAS n'est pas le moyen le plus fluide de le faire. , puisque:
Au lieu de cela, essayez de copier et coller le code suivant pour vous assurer que votre fichier de commandes s'exécute avec des privilèges d'administrateur:
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo Requesting Admin access...
goto goUAC )
else goto goADMIN
:goUAC
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
:goADMIN
pushd "%CD%"
CD /D "%~dp0"
rem --- FROM HERE PASTE YOUR ADMIN-ENABLED BATCH SCRIPT ---
echo Stopping some Microsoft Service...
net stop sqlserveragent
rem --- END OF BATCH ----
Cette solution fonctionne à 100% sous Windows 7, 8.1 et 10 avec l’UAC activé.
La commande ci-dessous peut être enregistrée en tant que fichier bat en remplaçant le nom du fichier bat. La commande ci-dessous s'applique à Windows 7 64 bits.
"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" -windowstyle hidden -nologo -noprofile -executionpolicy bypass -command "start-process -verb 'runas' -filepath BATCHFILENAME.BAT