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.
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.
Il existe un moyen de le faire dans PowerShell:
PS> Start-Process powershell -Verb runAs
En vous appuyant sur Rustam , vous pouvez:
su.bat
quelque part dans votre% PATH% par défaut, avec la ligne suivante: @powershell start -verb runas %*
function su {start -verb runas @args}
Vous pouvez maintenant émettre su <command> [parameters]
dans l’un ou l’autre shell!
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 cd
dans un endroit sûr.
exigences :
Sudo
sous Linux.solution :
Sudo.cmd
Sudo.lnk
.Sudo
dans votre chemin PATH Windows afin qu’il soit visible.Start in:
.Advanced
name__] - Cochez Run as Administrator
.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 "[NO
name__]", rien ne se passera. Windows affichera un message "Access is denied.
".
Lorsque vous cliquez sur "[YES
name__]", 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 pause
attend que vous examiniez les résultats. Si vous utilisez pause
name__, la fenêtre d’administration se ferme et vous ne savez pas si la commande a fonctionné ou non. Le ERRORLEVEL
de la commande est également renvoyé.
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.
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:
Voici quelques autres fonctionnalités (vous pouvez également ajouter les vôtres):
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