web-dev-qa-db-fra.com

Exécution automatique d'un fichier de commandes en tant qu'administrateur

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.

25
Vinay KV

Sous Windows 7:

  1. Créer un raccourci vers ce fichier de commandes

  2. Faites un clic droit sur ce fichier de raccourci et choisissez Propriétés

  3. Cliquez sur le bouton Advanced pour trouver une case à cocher à exécuter en tant qu'administrateur.

Vérifiez la capture d'écran ci-dessous

Screenshot

20
fedmich

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.

12
bismack163

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.

11
user93353

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.

7
Hossein Jafarinejad

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:

elevatecmd.exe

http://blogs.technet.com/b/elevationpowertoys/

1
surfasb

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:

  1. Vous ne serez pas invité à demander l'autorisation UAC, même si vous êtes connecté en tant qu'administrateur et
  2. RUNAS s'attend à ce que vous ayez le mot de passe administrateur, même si votre utilisateur est configuré en tant qu'administrateur local. Dans ce cas, l'ancien mot de passe n'est pas une bonne pratique de sécurité, spécialement dans les environnements de travail.

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é.

1
user3285866

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
0
LN Bhat