Wie öffne ich ein erhöhtes cmd über die Befehlszeile für Windows?


109

Wie öffne ich eine Eingabeaufforderung mit erhöhten Rechten mithilfe von Befehlszeilen auf einem normalen cmd?

Zum Beispiel benutze ich runas /username:admin cmdaber das geöffnete cmd scheint nicht erhöht zu sein! Irgendwelche Lösungen?


Ich habe alle Antworten ausprobiert. Die nützlichste Antwort ohne Software und am wenigsten ohne Aktionen ist stackoverflow.com/a/40942828/9217577
TheGuardener

Antworten:


164

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:

  1. Öffnen Sie CMD
  2. Schreiben powershell -Command "Start-Process cmd -Verb RunAs"und drückenEnter
  3. Ein Popup-Fenster wird angezeigt, in dem Sie aufgefordert werden, ein CMD als Administrator zu öffnen

2
Gute Antwort. Ich habe hinzugefügt und bearbeitet, damit es in einer Befehlszeile ausgeführt wird!
Preet Sangha

1
Ich habe damit eine Batch-Datei erstellt und sie als admincmd.bat in meinem Windows-Ordner gespeichert. Ich muss also nur "admincmd" eingeben und die Eingabetaste drücken. Daraufhin wird eine Admin-cmd geöffnet. (Ich habe der Batch-Datei auch eine weitere Zeile hinzugefügt mit " exit "so schließt es das nicht admin cmd Fenster)
Tony Brix

Warum platzieren Sie nicht das cmd (und alle Parameter) am Ende. Der Befehl ist vom Standpunkt der Lesbarkeit aus ungerade.
Eric Fossum

38

Laut 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:

NirCmd :

  1. Laden Sie es herunter und entpacken Sie es.
  2. nircmdc elevate cmd

Windosu :

  1. Installieren Sie es: npm install -g windosu(erfordert node.js installiert)
  2. sudo cmd

3
Danke, nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1endlich funktioniert. Die anderen runas /user:...Möglichkeiten führten zur Eingabe eines Kennworts, obwohl Sie bereits Administrator waren (Batch-Modus beendet).
Marcos

Vielen Dank fürnircmdc elevate cmd
Tim

4
Erstellen Sie nach der Installation eine Datei in Ihrem Pfad mit folgendem Inhalt nircmd, damit es wie Linux funktioniert : . Dann können Sie zum Beispiel tunsudosudo.batnircmd elevate %*sudo net stop W3SVC
Kip

1
Ich denke, Windosu ist bei weitem die einfachste und eleganteste Art, dies zu tun, besonders wenn Sie ein Entwickler sind ... danke Mann. Ich fühle mich wie auf nix System: D
Emmanuel Mahuni

geliebt windosu:)
Finlay Roelofs

32

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"

26

Einfach, wie ich es getan habe, nachdem ich hier andere Antworten ausprobiert hatte

Methode 1: OHNE ein Programm eines Drittanbieters (ich habe dies verwendet)

  1. Erstellen Sie eine Datei mit dem Namen sudo.bat(Sie können sie durch einen sudobeliebigen Namen ersetzen ) mit folgendem Inhalt powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
  2. Wechseln Sie sudo.batin einen Ordner in Ihrem PATH; Wenn Sie nicht wissen, was das bedeutet, verschieben Sie diese Dateien einfach inc:\windows\
  3. Funktioniert jetzt sudoim Dialogfeld "Ausführen" ( win+r) oder in der Adressleiste des Explorers (dies ist der beste Teil :))

Methode 2: MIT einem Drittanbieterprogramm

  1. Laden Sie NirCmd herunter und entpacken Sie es.
  2. Erstellen Sie eine Datei mit dem Namen sudo.bat(Sie können sie durch einen sudobeliebigen Namen ersetzen ) mit folgendem Inhalt nircmdc elevate cmd /k "cd /d %cd%"
  3. Bewegung nircmdc.exe und sudo.batin einen Ordner in Ihrem PATH; Wenn Sie nicht wissen, was das bedeutet, verschieben Sie diese Dateien einfach inc:\windows\
  4. Funktioniert jetzt sudoim Dialogfeld "Ausführen" ( win+r) oder in der Adressleiste des Explorers (dies ist der beste Teil :))

Während beide Lösungen arbeiten, leider werden sie in der Folge UAC - Dialog auf (z-Ordnung-weise) zeigt sich aber nicht immer konzentriert . (Getestet auf Win10x64 v1607 build14393.447.)
Ogmios

@ Ogmios das ist ziemlich seltsam. Funktioniert der Dialog ordnungsgemäß, wenn er nicht so initiiert wird? Ich habe dies sehr glücklich ohne solche Probleme verwendet. Vielleicht liegt es an einer anderen Konfiguration, die Sie geändert haben?
Dheeraj Bhaskar

Ja, der UAC-Dialog funktioniert in allen anderen Situationen wie erwartet (wie ich festgestellt habe). Dies ist die einzige Ausnahme. Natürlich habe ich mein System auf andere Weise geändert, aber ich habe nichts gefunden, was einen versteckten Effekt auf diesen Dialog haben könnte.
Ogmios

@ Ogmios Entschuldigung, Kumpel, ich kann mir nichts anderes vorstellen, was Sie tun können, um dies zu beheben. Sie sollten wahrscheinlich die anderen Lösungen ausprobieren, um festzustellen, ob sie für Sie besser sind. Prost
Dheeraj Bhaskar

Powershell ist zwar kein Drittanbieter, aber kein Aktienprogramm, und Sie schreiben sozusagen ein Drittanbieterprogramm, um das Ziel zu erreichen.
Undrline

13

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)"


8

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 "

5

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.


1
Damit dies funktioniert, müssen Sie die Eigenschaften von psexec.exe bearbeiten und auf der Registerkarte Kompatibilität "Als Administrator ausführen" aktivieren. Andernfalls wird die Fehlermeldung angezeigt: PSEXESVC nicht installiert. Psexec verursacht jedoch Probleme mit der Tabulatortaste in der cmd.exe. Die Registerkarte kann nicht zum Vervollständigen von Ordnernamen verwendet werden.
Peter Quiring

Sie sind sich nicht sicher, in welcher Umgebung Sie es versucht haben, aber ich musste die Einstellung "Als Administrator ausführen" nicht ändern (versuchen Sie, die Datei cmd.exe auf einem Remotecomputer von Ihrem aus auszuführen?). Auch keine Probleme mit der Tabulatortaste, ich kann Dateien und Ordnernamen erfolgreich vervollständigen (zumindest unter Win8.1 und Win10 getestet, sowohl über cmd- als auch über PowerShell-Befehlszeilen)
David Rodriguez

Ich benutze Win10 und führe es lokal aus. Ich bin mir nicht sicher, warum es mir passiert und nicht dir. Ich habe nircmd zum Laufen gebracht und es verursacht kein Tab-Problem.
Peter Quiring

Ich stelle auch fest, dass man mit der Tabulatortaste nicht automatisch vervollständigen kann, aber dies würde zumindest eine erhöhte cmd-Eingabeaufforderung im Kontext eines anderen Benutzers öffnen, was die oben genannten Methoden bei meinem Versuch nicht zu erreichen schienen. Die '-h'-Flagge ist großartig (Windows 10), ein Vergnügen.
user1840734

4

Lassen Sie die Batchdatei mithilfe des /savecredSchalters 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

3

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 ).

  1. cmdadm.lnk (Verknüpfungseigenschaften / Erweitert ... / Als Administrator ausführen = EIN) %SystemRoot%\System32\cmd.exe /k "cd /d"
  2. su.bat @start cmdadm.lnk %cd%

Laufen Sie mit su.


Ich kann das leider nicht reproduzieren. Wann immer ich eine meiner Lösungen verwende. Meine UAC-Eingabeaufforderung ist fokussiert und oben
Dheeraj Bhaskar

3

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.exevon .zipin C:\Program Files\elevateund füge diesen Pfad meinem hinzuPATH .

Dann kann ich mit GitBash so etwas wie elevate sc stop W3SVCdas ausschaltenIIS Dienst .

Wenn ich den Befehl UACausfü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.


3

..

@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 ...


1
Powershell ist cool, aber es brauchtzz Module ... im oldscool ... brauche nur das System ...
jOte-

Funktioniert diese Erhebungsmethode / dieser Trick auch für lange Pfade / Dateinamen? Oder soll ich stattdessen "% ~ snx0" oder "% ~ dpsnx0" verwenden?
script'n'code

2

Ä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 elevateBefehl 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 elevatepund 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
)

0

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 habe alle oben genannten Lösungen gelesen und verstanden. Ich verstehe deine Schritte nicht. Ich wähle eine Lösung mit den besten Vor- und Nachteilen.
Dzmitry Lahoda

0

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"

2
Ich liebe die Antworten mit "Das könnte funktionieren, habe ich noch nicht getestet" und natürlich die mit "nicht sicher" ....
Giridhar Karnik

1
Link ist defekt.
Dzmitry Lahoda

Link wiederhergestellt, Entschuldigung
MrCalvin

0

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


0

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:

Windows Explorer-Integration

Hier sind die Schritte:

  1. Erstellen Sie diesen Schlüssel: \ HKEY_CLASSES_ROOT \ Folder \ shell \ dosherewithadmin
  2. Ändern Sie den Standardwert in einen beliebigen Wert, der als Menüelementtext angezeigt werden soll. Ex "DOS Shell als Admin"
  3. Erstellen Sie einen weiteren Schlüssel: \ HKEY_CLASSES_ROOT \ Folder \ shell \ dosherewithadmin \ command
  4. Ändern Sie den Standardwert in ipsis litteris: Powershell.exe -Befehl "Start-Prozess -Verb RunAs 'cmd.exe' -Args '/ k pushd"% 1 "'"
  5. Es ist fertig. Klicken Sie nun mit der rechten Maustaste in einen beliebigen Ordner und Sie sehen Ihren Artikel dort in den anderen Artikeln.

* Verwenden Sie pushd anstelle von cd, damit es in jedem Laufwerk funktioniert. :-)


-1

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.


-1

Verwenden Sie einfach den Befehl: runas / noprofile / user: Administrator cmd


-2

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).


hat mir nicht geholfen
Dzmitry Lahoda

@DzmitryLahoda Kannst du mir den Fehler mitteilen, den du bekommen hast?
Harish Regada

-2

Drücken Sie die Windows + X-Taste und Sie können jetzt die Powershell- oder Eingabeaufforderung mit Administratorrechten auswählen. Funktioniert, wenn Sie der Administrator sind. Die Funktion kann unbrauchbar werden, wenn das System nicht Ihnen gehört.


-5

Es gibt verschiedene Möglichkeiten, ein erhöhtes cmd zu öffnen, aber nur Ihre Methode funktioniert über die Standard-Eingabeaufforderung. Sie müssen nur usernicht sagen username:

runas /user:machinename\adminuser cmd

Siehe relevante Hilfe von der Microsoft-Community .


4
Dies ist nicht dasselbe wie das Ausführen eines erhöhten Befehls, denn wenn ich ein erhöhtes cmd-Fenster öffne und "whoami" eingebe, wird das gleiche Ergebnis wie bei einem nicht erhöhten Fenster erzielt. Wenn ich in beiden Fällen "whoami / all" ausführe, sehe ich die Unterschiede in Bezug auf die Berechtigungen für denselben Benutzer.
Constantino Cronemberger

-5

Ich habe verwendet, runas /user:domainuser@domain cmdwas eine Eingabeaufforderung mit erhöhten Rechten erfolgreich geöffnet hat.


Es erfordert die Anmeldeinformationen eines anderen Benutzers. Wenn Sie bereits Administrator sind und mit erhöhten Berechtigungen ausgeführt werden möchten, z. B. wenn Sie mit der rechten Maustaste auf eine Anwendung klicken und Als Administrator ausführen auswählen und kein Kennwort angefordert wird, nur ein Bestätigungsdialogfeld, benötigen Sie etwas anderes. Ich bin hierher gekommen, um nach dieser Antwort zu suchen, aber ich scheine nicht hier zu sein.
Paul-Sebastian Manole
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.