web-dev-qa-db-fra.com

Comment coder un fichier BAT pour qu'il soit toujours exécuté en mode administrateur?

J'ai cette ligne dans mon fichier BAT:

"Example1Server.exe"

Je voudrais exécuter ceci en mode administrateur. Comment modifier le code de la batte pour l'exécuter en tant qu'administrateur?

Est-ce correct? Dois-je mettre les citations?

runas /user:Administrator invis.vbs Example1Server.exe
119
karikari

Vous utilisez runas pour lancer un programme en tant qu'utilisateur spécifique:

runas /user:Administrator Example1Server.exe
56
Kerrek SB

L'autre réponse nécessite la saisie du mot de passe du compte administrateur. En outre, l’exécution sous un compte du groupe d’administrateurs n’est pas la même chose que exécuté en tant qu’administrateur voir: UAC sur Wikipedia

Instructions Windows 7

Afin de fonctionner en tant qu'administrateur, créez un raccourci pour le fichier de commandes.

  1. Faites un clic droit sur le fichier de commandes et cliquez sur copier 
  2. Naviguez où vous voulez le raccourci 
  3. Clic droit sur le fond du répertoire
  4. Sélectionnez Coller le raccourci

Ensuite, vous pouvez configurer le raccourci pour qu'il s'exécute en tant qu'administrateur:

  1. Clic droit sur le raccourci
  2. Choisissez Propriétés
  3. Dans l'onglet Raccourci, cliquez sur Avancé.
  4. Cochez la case "Exécuter en tant qu'administrateur"
  5. Cliquez sur OK, OK

Maintenant, lorsque vous double-cliquez sur le raccourci, il vous demandera de confirmer le contrôle de compte d'utilisateur puis Exécuter en tant qu'administrateur (qui, comme je l'ai dit plus haut, est différent de l'exécution sous un compte du groupe d'administrateurs)

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

Screenshot

Remarque: Lorsque vous exécutez Exécuter en tant qu'administrateur, le répertoire actuel (chemin) ne sera pas identique au fichier bat. Cela peut causer des problèmes dans de nombreux cas, le fichier chauve-souris faisant référence à des fichiers relatifs à côté de lui. Par exemple, sous Windows 7, le répertoire actuel sera SYSTEM32 au lieu de l'emplacement du fichier bat! Pour contourner ce problème , vous devez utiliser 

cd "%~dp0" 

ou mieux 

pushd "%~dp0" 

pour vous assurer que le répertoire est sur le même chemin que le fichier bat.

323
Ed Greaves

Si vous pouvez utiliser un utilitaire tiers, voici un utilitaire de ligne de commande elevate .

Ceci est la description de l'utilisation:

Usage: Elevate [-?|-wait|-k] prog [args]
-?    - Shows this help
-wait - Waits until prog terminates
-k    - Starts the the %COMSPEC% environment variable value and
                executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog  - The program to execute
args  - Optional command line arguments to prog
8
aphoria

Vous pouvez utiliser nircmd.exe 's elevate command

Référence de la commande NirCmd - elevate

elevate [Program] {Command-Line Parameters}

_ {Pour Windows Vista/7/2008 uniquement: exécuter un programme avec des droits d'administrateur. Lorsque le [Programme] contient un ou plusieurs espaces, vous devez le mettre entre guillemets. 

Exemples: 

elevate notepad.exe 
elevate notepad.exe C:\Windows\System32\Drivers\etc\HOSTS 
elevate "c:\program files\my software\abc.exe"

PS: je l'utilise sur win 10 et ça marche

6
Dheeraj Bhaskar

Je pense avoir une solution au problème de mot de passe… .. Ce seul argument est vraiment étonnant. Il demande une fois le mot de passe et ne le redemande jamais. Même si vous le mettez sur un autre programme, il ne vous demandera pas le mot de passe. C'est ici:

runas /user:Administrator /savecred Example1Server.exe

5
Anynomous

convertissez votre fichier batch en .exe avec cet outil: http://www.battoexeconverter.com/ vous pouvez l’exécuter en tant qu’administrateur

5
xxedxx
go get github.com/mattn/Sudo

Ensuite

Sudo Example1Server.exe
2
mattn
  1. Mon expérimentation indique que la commande runas doit inclure le domaine de l'utilisateur admin (du moins dans la configuration environnementale de mon entreprise):

    runas /user:AdminDomain\AdminUserName ExampleScript.bat
    
  2. Les réponses fournies par Kerrek SB et Ed Greaves exécuteront le fichier cible sous l'utilisateur admin, mais si le script cible est un fichier ".bat", ils ne le feront pas. t réellement mettre à niveau les commandes dans le script afin d’obtenir les autorisations de niveau administrateur de l’utilisateur admin, au moins lorsqu’il tente d’ajouter par exemple à l’ajout ou à la modification de clés de registre qui sont par ailleurs verrouillées par la stratégie de groupe.

    Est-ce que quelqu'un sait comment mettre à niveau les commandes bat-file (CMD) avec les autorisations d'administrateur?

1
pstraton

Ajoutez simplement ceci en haut de votre fichier chauve-souris:

set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || (  echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )

Il passera à admin et restera également dans le bon répertoire. Testé sous Windows 10.

1
Sire

Devrait certainement fonctionner en ajoutant ces lignes en haut de votre fichier chauve-souris. Cela sauve littéralement la vie!

set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || (  echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )
0
xikandar hayyat

Utilisez le chemin physique complet du lecteur vers le fichier de traitement cible dans les propriétés du raccourci.

Cela ne fonctionne pas sous Windows 10 si vous utilisez des lecteurs de poste tels que j'ai essayé de le faire au début ...

0
Samiamias