web-dev-qa-db-fra.com

Comment exécuter un programme en ligne avec les droits élevés

Existe-t-il un moyen d'exécuter un programme ou une commande avec des droits élevés lorsque je suis déjà en ligne de commande non élevée?

Exactement la même action que lorsque je clique sur le raccourci du programme et que je sélectionne Exécuter en tant qu'administrateur .

La commande runas n’est probablement pas une solution; elle demande un mot de passe, mais je veux juste le UAC dialogue.

43
Lukas Cenovsky

Il ressemble à cet utilitaire - Hidden Start - fera ce que vous souhaitez si vous utilisez le commutateur/uac. Voici un exemple de ligne de commande:

hstart /UAC "notepad.exe"

Cela fera apparaître la boîte de dialogue UAC plutôt que de demander un mot de passe comme le fait runas.

enter image description here

14
JeffP

Il existe un moyen de le faire dans PowerShell:

PS> Start-Process powershell -Verb runAs
47
Rustam

En vous appuyant sur Rustam , vous pouvez:

  • Créez un fichier de commandes su.bat quelque part dans votre% PATH% par défaut, avec la ligne suivante: @powershell start -verb runas %*
  • Ajoutez cette fonction à votre profil PowerShell $ : function su {start -verb runas @args}

Vous pouvez maintenant émettre su <command> [parameters] dans l’un ou l’autre shell!

4
Nico57

Cela fonctionne pour moi sur toutes les plateformes, y compris Windows 10. Mes besoins sont simples, vous pouvez peut-être adapter l'approche si vous avez besoin de puissance .

Je suis arrivé avec un petit script nommé, Sudo.cmd nommé pour la commande Linux Sudo. Cela fonctionne assez bien, il pense. J'ai décrit les exigences, les étapes à suivre et le script est près du bas avec un exemple. D'abord un mot d'avertissement.

WARNING: la commande est exécutée par défaut dans le répertoire système de Windows. Vous voudrez d'abord cddans un endroit sûr.

exigences :

  • Exécuter la commande avec un administrateur privilégié de Windows .CMD
    ou le cmd-Shell.
  • exiger les vérifications normales des privilèges Windows sur la commande
    • En d'autres termes, la commande ne fonctionnera PAS sauf si je suis déjà connecté avec un compte privilégié.
  • Exécutez la commande avec l'autorisation de l'administrateur et continuez lorsqu'elle est appelée dans un script. Attendez donc que la commande soit terminée.
  • Soyez simple pour que ça marche toujours
  • Pas besoin de saisir un mot de passe à chaque fois, si je suis déjà connecté.
    • Une meilleure méthode serait si je peux entrer un mot de passe une fois que la vraie commande Sudosous Linux.

solution :

  1. Créez un script de commande pour exécuter tous les arguments passés, Sudo.cmd
  2. Créez un raccourci Windows pour le script de commande nommez-le: Sudo.lnk.
  3. Mettez le raccourci Sudodans votre chemin PATH Windows afin qu’il soit visible.
  4. Modifiez les propriétés du raccourci, renseignez le chemin Start in:.
  5. Cliquez sur le bouton [Advancedname__] - Cochez Run as Administrator.
  6. Activer les raccourcis dans votre chemin Windows, utilisez la variable d'environnement PATHEXT, à savoir.
d:> echo %PATHEXT%
    .lnk;.EXE;.CMD;.BAT;.COM

Lorsque vous tapez Sudo dir sur la ligne de commande, Windows affiche le message

User Account Control

Do you want to allow this app to make changes to this device?

  [YES]  [NO]

Contrôle d'accès pop-up. Si vous cliquez sur "[NOname__]", rien ne se passera. Windows affichera un message "Access is denied.".

Lorsque vous cliquez sur "[YESname__]", la commande de répertoire s'exécute avec un privilège élevé. Bien sûr, vous voulez probablement quelque chose de plus intéressant, comme un arrêt ou une requête sur un service:

 Sudo sc query SDRSVC

SDRSVC est le nom du service "Service de sauvegarde Windows". Ce qui suit apparaît dans une fenêtre Cmd séparée:

  [Sudo]

   administrator
  ---------------

  sc query SDRSVC

SERVICE_NAME: SDRSVC
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

  [done]

Press any key to continue . . .

Le script Sudo.cmd lui-même est très basique. Comme je l'ai dit, mes besoins sont simples. Je veux juste arrêter et démarrer les services pendant le déploiement du code à des fins de test.

Sudo.cmd:

 @echo off
 @rem    Sudo.cmd
         cd /d %temp%
 @echo.
 @echo.   administrator
 @echo.  ---------------
         cd 
 @echo.
 @rem  _________________________________________________
 @rem      -- Print usage . . .
        @if    [""]      ==["%~1"]   goto USAGE
        @if /i ["--HELP"]==["%~1"]   goto USAGE
 @rem  _________________________________________________
 @rem
 @echo.  %*
 @rem
         %*
 @rem
         set EXIT_STATUS=%ERRORLEVEL%
 @rem  -- -- -- -- --  
 @echo.
 @echo.  [done]
 @rem  ______________________________________________________
 :Exit
 @echo.
 @pause
  exit /b  %EXIT_STATUS%
 @rem  ______________________________________________________
 :USAGE
 @echo.
 @echo  ^Usage:
 @echo.    Sudo ^<complete command line^>
 @echo.
 @echo.  Attempts to rune the: ^<complete command line^>
 @echo.  under Administrator priviliges.  Relies on Windows 
 @echo.  Prompt for elevated privileges.
 @rem  ______________________________________________________
 @goto Exit

La commande pauseattend que vous examiniez les résultats. Si vous utilisez pausename__, la fenêtre d’administration se ferme et vous ne savez pas si la commande a fonctionné ou non. Le ERRORLEVELde la commande est également renvoyé.

2
will

RunAdmin est un petit utilitaire (150 Ko) qui vous permet d’exécuter un programme en ligne de commande avec des droits élevés (il indiquera le contrôle de compte d'utilisateur). Et en face de Hidden Start, c’est gratuit.

2
Rigel

Jetez un coup d'oeil à Start ++ - il dispose de cette fonctionnalité ainsi que de nombreuses autres choses utiles. Pour exécuter avec l'invite UAC, utilisez simplement Sudo, puis le nom de votre programme sur la ligne de commande, comme indiqué ci-dessous:

alt text

Voici quelques autres fonctionnalités (vous pouvez également ajouter les vôtres):

alt text

alt text

0
John T

Cela fonctionne pour Windows 10, n'a pas été testé avec d'autres versions de Windows.

Un exemple pour ouvrir le bloc-notes avec les droits d'administrateur de cmd.exe qui démarre PowerShell et qui demande les autorisations élevées.

C:\>start powershell -command "&{start-process -filepath notepad -verb RunAs}"

Cela vous donnera une boîte de dialogue UAC (si elle est activée) avec [Oui] [Non], ou vous demandera le mot de passe de l'administrateur.

Un autre exemple pour ouvrir le fichier hosts avec notepad serait:

C:\>start powershell -command "&{start-process -filepath notepad 'C:\Windows\System32\drivers\etc\hosts' -verb RunAs}"

Informations complémentaires: https://docs.Microsoft.com/en-us/powershell/module/Microsoft.powershell.management/start-process?view=powershell-6

0
Alex