Wie öffne ich eine Eingabeaufforderung mit erhöhten Rechten mithilfe von Befehlszeilen auf einem normalen cmd?
Zum Beispiel benutze ich runas /username:admin cmd
aber das geöffnete cmd scheint nicht erhöht zu sein! Irgendwelche Lösungen?
Wie öffne ich eine Eingabeaufforderung mit erhöhten Rechten mithilfe von Befehlszeilen auf einem normalen cmd?
Zum Beispiel benutze ich runas /username:admin cmd
aber das geöffnete cmd scheint nicht erhöht zu sein! Irgendwelche Lösungen?
Antworten:
Ich bin auf dasselbe Problem gestoßen, und die einzige Möglichkeit, die CMD als Administrator von CMD aus zu öffnen, bestand darin, Folgendes zu tun:
powershell -Command "Start-Process cmd -Verb RunAs"
und drückenEnterLaut Dokumentation ist das Windows-Sicherheitsmodell ...
gewährt nicht immer Administratorrechte. Selbst Administratoren werden unter Standardberechtigungen ausgeführt, wenn sie nicht administrative Aufgaben ausführen, für die keine erhöhten Berechtigungen erforderlich sind.
Sie haben die Option Diese Aufgabe mit Administratorrechten erstellen im Dialogfeld Neue Aufgabe erstellen ( Task-Manager> Datei> Neue Aufgabe ausführen ), es gibt jedoch keine integrierte Möglichkeit, Berechtigungen über die Befehlszeile effektiv zu erhöhen.
Es gibt jedoch einige Tools von Drittanbietern (die intern auf Windows-APIs basieren), mit denen Sie die Berechtigungen über die Befehlszeile erhöhen können:
nircmdc elevate cmd
npm install -g windosu
(erfordert node.js installiert)sudo cmd
nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1
endlich funktioniert. Die anderen runas /user:...
Möglichkeiten führten zur Eingabe eines Kennworts, obwohl Sie bereits Administrator waren (Batch-Modus beendet).
nircmdc elevate cmd
nircmd
, damit es wie Linux funktioniert : . Dann können Sie zum Beispiel tunsudo
sudo.bat
nircmd elevate %*
sudo net stop W3SVC
windosu
:)
Ich habe nicht genug Ruf, um der Top-Antwort einen Kommentar hinzuzufügen, aber mit der Macht der Aliase können Sie davonkommen, indem Sie einfach Folgendes eingeben:
powershell "start cmd -v runAs"
Dies ist nur eine kürzere Version von user3018703 ausgezeichnete Lösung:
powershell -Command "Start-Process cmd -Verb RunAs"
sudo.bat
(Sie können sie durch einen sudo
beliebigen Namen ersetzen ) mit folgendem Inhalt
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
sudo.bat
in einen Ordner in Ihrem PATH
; Wenn Sie nicht wissen, was das bedeutet, verschieben Sie diese Dateien einfach inc:\windows\
sudo
im Dialogfeld "Ausführen" ( win+r) oder in der Adressleiste des Explorers (dies ist der beste Teil :))sudo.bat
(Sie können sie durch einen sudo
beliebigen Namen ersetzen ) mit folgendem Inhalt
nircmdc elevate cmd /k "cd /d %cd%"
nircmdc.exe
und sudo.bat
in einen Ordner in Ihrem PATH
; Wenn Sie nicht wissen, was das bedeutet, verschieben Sie diese Dateien einfach inc:\windows\
sudo
im Dialogfeld "Ausführen" ( win+r) oder in der Adressleiste des Explorers (dies ist der beste Teil :))Ich benutze ständig nirsoft-Programme (zB nircmdc) und sysinternals (zB psexec). Sie sind sehr hilfreich.
Wenn Sie jedoch kein Programm eines Drittanbieters verwenden möchten oder können, finden Sie hier einen anderen Weg: reines Windows.
Kurze Antwort : Sie können im erhöhten Zustand eine geplante Aufgabe mit erhöhten Berechtigungen erstellen, die Sie später aufrufen können, wenn Sie nicht erhöht sind.
Mittellange Antwort : Während erhöht, erstellen Sie eine Aufgabe mit (aber ich bevorzuge die Taskplaner-GUI):
schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00
Dann später, keine Erhebung nötig, mit aufrufen
schtasks /run /tn cmd_elev
Lange Antwort : Es gibt viele zappelige Details; siehe meinen Blogeintrag "Programm OHNE Benutzerkontensteuerung starten, nützlich beim Systemstart und in Batchdateien (Taskplaner verwenden)"
Im Folgenden wird als Batch-Datei eine Eingabeaufforderung mit erhöhten Rechten geöffnet, wobei der Pfad auf dasselbe Verzeichnis festgelegt ist wie das Verzeichnis, von dem aus die Batch-Datei aufgerufen wurde
set OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "
Am liebsten verwende ich dazu PsExec.exe von SysInternals, verfügbar unter http://technet.microsoft.com/en-us/sysinternals/bb897553
.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe
Der "-h" -Schalter ist derjenige, der die Magie ausführt:
-h Wenn das Zielsystem Vista oder höher ist, wird der Prozess mit dem erhöhten Token des Kontos ausgeführt, sofern verfügbar.
Lassen Sie die Batchdatei mithilfe des /savecred
Schalters die Anmeldeinformationen des tatsächlichen Administratorkontos speichern . Dadurch werden Sie beim ersten Mal zur Eingabe von Anmeldeinformationen aufgefordert und das verschlüsselte Kennwort im Anmeldeinformations-Manager gespeichert. In allen folgenden Fällen wird der Stapel als vollständiger Administrator ausgeführt, jedoch nicht zur Eingabe von Anmeldeinformationen aufgefordert, da diese verschlüsselt im Anmeldeinformations-Manager gespeichert sind und der Endbenutzer das Kennwort nicht erhalten kann. Folgendes sollte eine CMD mit erhöhten Rechten und vollständigen Administratorrechten öffnen und nur beim ersten Mal zur Eingabe eines Kennworts auffordern:
START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
Während beide Lösungen von Dheeraj Bhaskar Arbeit zur Verfügung gestellt, leider werden sie in der Folge UAC - Dialog oben zeigt nach oben (z-Ordnung-weise) , aber nicht immer konzentriert (das fokussierte Fenster ist der Anrufer cmd / Powershell - Fenster), so dass ich entweder Notwendigkeit, Nehmen Sie die Maus und klicken Sie auf "Ja" oder wählen Sie das UAC-Fenster mit Alt + Umschalt + Tab. (Getestet unter Win10x64 v1607 build14393.447; UAC = "[...] nicht [...] dimmen " .)
Die folgende Lösung ist etwas umständlich, da zwei Dateien verwendet werden, die korrekte Fokusreihenfolge jedoch beibehalten wird, sodass keine zusätzlichen Maus- / Tastaturaktionen erforderlich sind (außer der Bestätigung des UAC-Dialogfelds: Alt + Y ).
%SystemRoot%\System32\cmd.exe /k "cd /d"
@start cmdadm.lnk %cd%
Laufen Sie mit su
.
Ich habe benutzt Elevate
jetzt Weile.
Es ist Beschreibung - This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.
Ich kopiere das bin.x86-64\elevate.exe
von .zip
in C:\Program Files\elevate
und füge diesen Pfad meinem hinzuPATH
.
Dann kann ich mit GitBash so etwas wie elevate sc stop W3SVC
das ausschaltenIIS
Dienst .
Wenn ich den Befehl UAC
ausführe, erhalte ich den Dialog, der mit der Tastatursteuerung richtig fokussiert ist, und wenn ich den Dialog akzeptiere, kehre ich zu meiner Shell zurück.
..
@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
Speichern Sie dieses Skript als "god.cmd" in Ihrem System32 oder in was auch immer Ihr Pfad führt ....
Wenn Sie ein cmd in e: \ mypictures \ öffnen und god eingeben, werden Sie nach Anmeldeinformationen gefragt und an den gleichen Ort wie der Administrator zurückversetzt ...
Ähnlich wie bei einigen der anderen oben genannten Lösungen habe ich eine erstellt elevate
Batchdatei erstellt, in der ein PowerShell-Fenster mit erhöhten Rechten ausgeführt wird. Dabei wurde die Ausführungsrichtlinie umgangen, um die Ausführung von einfachen Befehlen über Batchdateien bis hin zu komplexen PowerShell-Skripten zu ermöglichen. Ich empfehle, es zur Vereinfachung der Verwendung in Ihrem Ordner C: \ Windows \ System32 abzulegen.
Der ursprüngliche elevate
Befehl führt seine Aufgabe aus, erfasst die Ausgabe, schließt das erzeugte PowerShell-Fenster und kehrt dann zurück, wobei die erfasste Ausgabe in das ursprüngliche Fenster geschrieben wird.
Ich habe zwei Varianten erstellt elevatep
und elevatex
, die das PowerShell-Fenster für weitere Arbeiten anhalten und geöffnet lassen.
https://github.com/jt-github/elevate
Und für den Fall, dass mein Link jemals stirbt, ist hier der Code für die ursprüngliche Batch-Datei zum Erhöhen:
@Echo Off
REM Executes a command in an elevated PowerShell window and captures/displays output
REM Note that any file paths must be fully qualified!
REM Example: elevate myAdminCommand -myArg1 -myArg2 someValue
if "%1"=="" (
REM If no command is passed, simply open an elevated PowerShell window.
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -Verb RunAs}"
) ELSE (
REM Copy command+arguments (passed as a parameter) into a ps1 file
REM Start PowerShell with Elevated access (prompting UAC confirmation)
REM and run the ps1 file
REM then close elevated window when finished
REM Output captured results
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
)
Kann eine temporäre Umgebungsvariable verwenden, um sie mit einer erhöhten Verknüpfung zu verwenden (
start.cmd
setx valueName_betterSpecificForEachCase %~dp0
"%~dp0ascladm.lnk"
ascladm.lnk (Verknüpfung)
_ properties\advanced\"run as administrator"=yes
(Um Pfadänderungen vorzunehmen, müssen Sie die vorübergehend erstellen. env.Variable
)
_ properties\target="%valueName_betterSpecificForEachCase%\ascladm.cmd"
_ properties\"start in"="%valueName_betterSpecificForEachCase%"
ascladm.cmd
setx valueName_betterSpecificForEachCase=
reg delete HKEY_CURRENT_USER\Environment /F /V valueName_betterSpecificForEachCase
"%~dp0fileName_targetedCmd.cmd"
) (targetCmd wird im erhöhten cmd-Fenster ausgeführt)
Obwohl es sich um 3 Dateien handelt, können Sie alles (einschließlich targetCmd) in einem Unterordner ablegen (vergessen Sie nicht, den Ordnernamen zu den Patches hinzuzufügen) und "start.cmd" in den Namen eines Ziels umbenennen
Für mich sieht es nach der nativsten Methode aus, während cmd nicht über den erforderlichen Befehl verfügt
Ich bin nicht sicher, ob das Tool ExecElevated.exe (13 KB) den Job erledigt ... aber es könnte sein. Oder zumindest nützlich für andere mit ähnlichen Anforderungen, die wie ich auf diese Seite gekommen sind (aber ich habe die Lösung nicht gefunden, sodass ich das Tool selbst in .Net erstellt habe).
Es wird eine Anwendung mit erhöhtem Token ausgeführt (im Admin-Modus). Sie erhalten jedoch einen UAC-Dialog zur Bestätigung! (Vielleicht nicht, wenn die Benutzerkontensteuerung deaktiviert wurde, habe sie nicht getestet).
Und das Konto, das das Tool aufruft, muss auch admin haben. Rechte natürlich.
Anwendungsbeispiel:
ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
In Dheeraj Bhaskars Methode mit Powershell fehlt ein Leerzeichen, zumindest für die Windows 10-Inkarnation von Powershell.
Die Kommandozeile in seiner sudo.bat sollte sein
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"
Beachten Sie den zusätzlichen Speicherplatz nach% cd%
;) Frode
Hier ist eine Möglichkeit zur Integration in den Explorer. Wenn Sie mit der rechten Maustaste in einen Ordner im Windows Explorer klicken, wird ein zusätzlicher Menüpunkt angezeigt:
Hier sind die Schritte:
* Verwenden Sie pushd anstelle von cd, damit es in jedem Laufwerk funktioniert. :-)
Sie können die folgende Syntax verwenden, ich hatte die gleiche Frage und dachte nicht, dass ein Skript benötigt werden sollte.
runas / profile / user: domain \ username cmd
Dies hat bei mir funktioniert, es kann in Ihrem Netzwerk anders sein.
Ich habe es einfach gemacht, indem ich diesen folgenden Befehl in cmd verwendet habe
runas / netonly / user: Administrator \ Administrator cmd
Nachdem Sie diesen Befehl eingegeben haben, müssen Sie Ihr Administratorkennwort eingeben (wenn Sie Ihr Administratorkennwort nicht kennen, lassen Sie es leer und drücken Sie die Eingabetaste oder geben Sie etwas ein, das für mich funktioniert hat).
Es gibt verschiedene Möglichkeiten, ein erhöhtes cmd zu öffnen, aber nur Ihre Methode funktioniert über die Standard-Eingabeaufforderung. Sie müssen nur user
nicht sagen username
:
runas /user:machinename\adminuser cmd
Siehe relevante Hilfe von der Microsoft-Community .
Ich habe verwendet, runas /user:domainuser@domain cmd
was eine Eingabeaufforderung mit erhöhten Rechten erfolgreich geöffnet hat.