Comment ouvrir une invite de commandes élevée en utilisant des lignes de commandes sur une commande cmd normale ?
Par exemple, j'utilise runas /username:admin cmd
mais la commande cmd ouverte ne semble pas être élevée ! Des solutions ?
Comment ouvrir une invite de commandes élevée en utilisant des lignes de commandes sur une commande cmd normale ?
Par exemple, j'utilise runas /username:admin cmd
mais la commande cmd ouverte ne semble pas être élevée ! Des solutions ?
La méthode de Dheeraj Bhaskar avec Powershell a un espace manquant, du moins pour l'incarnation de Powershell sous Windows 10.
La ligne de commande à l'intérieur de son sudo.bat devrait être
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"
Remarquez l'espace supplémentaire après %cd%
;) Frode
Tout comme certaines des autres solutions ci-dessus, j'ai créé un fichier batch elevate
qui lance une fenêtre PowerShell avec élévation des privilèges, contournant la stratégie d'exécution pour permettre l'exécution de tout, des commandes simples aux fichiers batch en passant par des scripts PowerShell complexes. Je recommande de le placer dans votre dossier C: \ Windows \ System32 pour plus de facilité.
La commande elevate
d'origine exécute sa tâche, capture la sortie, ferme la fenêtre PowerShell ouverte, puis retourne en écrivant la sortie capturée dans la fenêtre d'origine.
J'ai créé deux variantes, elevatep
et elevatex
, qui respectivement mettent en pause et maintiennent la fenêtre PowerShell ouverte pour plus de travail.
https://github.com/jt-github/elevate
Et au cas où mon lien serait obsolète, voici le code du fichier batch elevate d'origine:
@Echo Off
REM Exécute une commande dans une fenêtre PowerShell élevée et capture/affiche la sortie
REM Notez que tous les chemins de fichiers doivent être entièrement qualifiés!
REM Exemple: elevate myAdminCommand -myArg1 -myArg2 someValue
if "%1"=="" (
REM Si aucune commande n'est passée, ouvre simplement une fenêtre PowerShell avec élévation des privilèges.
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -Verb RunAs}"
) ELSE (
REM Copie la commande+arguments (passés en paramètre) dans un fichier ps1
REM Démarre PowerShell avec un accès élevé (confirmation de l'UAC)
REM et exécute le fichier ps1
REM puis ferme la fenêtre élevée une fois terminée
REM Résultats capturés affichés
IF EXIST %temp%\trans.txt del %temp%\trans.txt
Echo %* ^> %temp%\trans.txt *^>^&1 > %temp%\tmp.ps1
Echo $error[0] ^| Add-Content %temp%\trans.txt -Encoding Default >> %temp%\tmp.ps1
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -ArgumentList '-ExecutionPolicy Bypass -File ""%temp%\tmp.ps1""' -Verb RunAs}"
Type %temp%\trans.txt
)
Enregistrer ce script sous "god.cmd" dans votre system32 ou tout autre chemin pointant vers ...
Si vous ouvrez un cmd dans e:\mypictures\ et tapez god, il vous demandera des identifiants et vous remettra au même endroit en tant qu'administrateur ...
@ECHO OFF
SETLOCAL EnableDelayedExpansion EnableExtensions
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO :EOF
:ELEVATE
SET this="%CD%"
SET this=!this:\=\\!
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('CMD', '/K CD /D \"!this!\"', '', 'runas', 1);close();"
EXIT 1
Voici une manière de s'intégrer à l'explorateur.
Voici les étapes :
\HKEY_CLASSES_ROOT\Folder\shell\dosherewithadmin
\HKEY_CLASSES_ROOT\Folder\shell\dosherewithadmin\command
powershell.exe -Command "Start-Process -Verb RunAs 'cmd.exe' -Args '/k pushd "%1"'"
*nous utilisons pushd
au lieu de cd
pour permettre son fonctionnement dans n'importe quel lecteur. :-)
Il semble y avoir beaucoup de solutions vraiment créatives à ce sujet, mais j'ai trouvé que Stiegler & Gui avaient le plus de sens pour moi. Je cherchais comment je pourrais le faire, mais en l'utilisant en conjonction avec mes informations d'identification administratives de domaine, au lieu de me fier aux autorisations locales de l'utilisateur actuel.
Voici ce que j'ai trouvé :
runas /noprofile /user:NomDuDomaine\NomUtilisateur "powershell start cmd -v runas"
Cela peut sembler redondant, mais cela me demande quand même mon mot de passe administratif et apparaît comme une invite de commandes élevée.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.