Frage Gibt es einen 'Sudo' Befehl für Windows?


Ich arbeite immer an einem Nicht-Administrator-Konto auf meinem Windows-Computer. Manchmal muss ich Programme installieren, die Administratorzugriff erfordern. Da ich meistens die Windows-Eingabeaufforderung verwende, gibt es einen Windows-Befehl, um Berechtigungen zu eskalieren, ähnlich dem Linux-Terminal-Befehl sudo?


414
2017-09-17 09:24


Ursprung


Ich glaube, der Begriff, den Sie suchen, ist "erhöhter" Zugang. Obwohl Ihre Anmeldeinformationen über Administratorrechte verfügen, verfügen Prozesse unter Ihren Anmeldeinformationen nicht über Administratorberechtigungen, bis Sie den Befehl "sudo" ausführen. In Windows nennen sie es "erhöhen". - surfasb
Benutz einfach su und dein Befehl. Es öffnet eine neue Instanz der Powershell, die als Administrator ausgeführt wird. - IGRACH
@IGRACH nicht auf meiner Powershell ... - jiggunjer


Antworten:


Das Rennen wie Befehl.

runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program

Lauf einfach:

runas /noprofile /user:Administrator cmd 

um eine Befehlsshell als Administrator zu starten


254
2017-09-17 09:29



Möglicherweise möchten Sie, dass das geladene Profil (z. B. einschließlich Umgebungsvariablen) für jede erweiterte Verwendung geladen wird. In diesem Fall löschen Sie die /noprofile. - Richard
Das funktioniert nicht für mich. Nachdem ich mein Passwort eingegeben habe, wird die Eingabeaufforderung geschlossen. - Jonas
fragt das nicht nach dem Administratorpasswort? Sudo fragt nach Ihre Passwort! - n611x007
Leider ist dies ernsthaft veraltet. Runas führt nur Befehle unter einem anderen Satz von Anmeldeinformationen aus. Obwohl Ihre Anmeldeinformationen über Administratorberechtigungen verfügen, bedeutet dies nicht, dass alle Prozesse unter Ihren Anmeldeinformationen als Administrator ausgeführt werden. - surfasb
+1 für "veraltet", da Runas UAC nicht umgehen können. Drücken Sie stattdessen die Windows-Taste, geben Sie cmd ein und drücken Sie Strg + Umschalt + Eingabe. - mellow-yellow


Ich entdeckte erheben heute was msgstr "" "Führt einen Befehl mit UAC - Berechtigungserhöhung aus. Dies ist nützlich für die Arbeit in Eingabeaufforderungen oder mit Batchdateien." Es ist nicht dasselbe wie sudoEs ändert den ausführenden Benutzer in Administrator, aber seine Syntax ist viel einfacher zu verwenden als runasund es kann das aktuelle Verzeichnis beibehalten und die Verwendung relativer Pfade ermöglichen.

Synopsis:
  elevate [(-c | -k) [-n] [-u]] [-w] command

Options:
  -c  Launches a terminating command processor; equivalent to "cmd /c command".
  -k  Launches a persistent command processor; equivalent to "cmd /k command".
  -n  When using -c or -k, do not pushd the current directory before execution.
  -u  When using -c or -k, use Unicode; equivalent to "cmd /u".
  -w  Waits for termination; equivalent to "start /wait command".

Der Zweck von Elevate besteht nicht darin, UAC (User Account Control) zu umgehen oder zu umgehen, sondern damit zu arbeiten. Solange UAC dort aktiviert ist hat um eine Art Prompt zu sein etwas Punkt in dem Prozess. Wenn Sie die Aufforderung ganz loswerden müssen, müssen Sie schalte UAC aus.

Der Schmerzpunkt, den Erhabenheit lindert, besteht darin, einen bestimmten Prozess von einer nicht-privilegierten Hülle zu eskalieren und dann normal weiterzumachen. Ohne dies müssen Sie eine privilegierte Eingabeaufforderung mit starten Rechtsklick> "Als Administrator ausführen", die nicht einfach skripted werden kann, bevor der privilegierte Befehl versucht wird.


112
2018-04-12 06:42



Das geht perfekt mit "Elevate ohne Aufforderung" in secpol.msc. Zusammen machen sie dasselbe wie %wheel ALL=(ALL) NOPASSWD: ALL in Sudo. - sayap
@Sayap, nur um klar zu sein, meinst du das: ss64.com/nt/syntax-uac.html? - matt wilkie
Das einzige Problem, das ich bei elevate (v1.3.0) finde, ist, dass es den Fehlercode des Programms, das er erhöht, nicht zurückgibt. - Ken
Sudo.bat: @elevate %* => Gewinn! - Joe DF
Wäre schön zu erwähnen, dass es ein externes Dienstprogramm ist, OOTB fehlt. - Hi-Angel


Du kannst den ... benutzen Rennen wie Befehl, der irgendwie ähnlich ist, oder Sie können die Sudo für Windows projizieren über bei Quellforge Das fügt einen Sudo-Befehl hinzu.

Der Unterschied ist subtil:

Angenommen, Sie haben zwei Benutzer. Bob ist ein normaler Benutzer und James ist ein Administrator.

Wenn Sie sich als Bob anmelden und "runas james acommand" verwenden, wird der Befehl so ausgeführt, als ob er von James ausgeführt würde, sodass er auf die Benutzereinstellungen von James zugreift und alle Benutzeränderungen in James übernommen werden Meine Dokumente & Einstellungen Ordner usw. Wenn Sie also eine Anwendung installieren, sagen wir, sie wird als James installiert, nicht als Bob.

Wenn Bob andererseits "sudo acmand" ausführt, wird der Befehl immer noch als Bob ausgeführt, aber mit erhöhten Berechtigungen - genau wie der Linux Sudo Befehl. Um zu verhindern, dass ein Benutzer sudo ausführen kann, müssen Sie eine sudoers-Benutzergruppe definieren, die die Liste der normalen Benutzer enthält, die die Berechtigung haben, mit sudo zu erhöhen. Die Benutzer müssen vor der Erhöhung noch Anmeldeinformationen angeben.

Manchmal ist der Unterschied nicht wichtig, manchmal ist es das, und ich finde, dass beide Befehle nützlich sein können.


66
2017-09-17 09:28



Bist du sicher? Wenn ich Sudo in Ubuntu starte, wenn mein aktuelles Thema in ist ~/.themes dann wird die sudo-ed-Anwendung nicht auf dieses Thema zugreifen können, da es nicht in ist /home/root/.themesund verwendet das standardmäßige hässliche gtk-Thema. - hasen
@hasen j - Ihr Problem ist nur, weil ~ / .themes auswertet, bevor der Befehl ausgeführt wird (und somit bevor er auf root umschaltet). - Jared
Eine andere Lösung, außer auf GitHub gehostet, ist windosu: github.com/thebenus/windosu Ich habe es gerade gefunden, und es scheint großartig zu funktionieren. Lieblings Sache ist, es ist super einfach zu installieren. Nur "npm installieren -g windosu". - Venryx


Sie können auch die Skript Elevation PowerToys.


39
2017-09-17 13:11



Genial - genau das, was ich gesucht habe. Ich wollte nicht laufen, da ein Befehl einen anderen Benutzer hat, nur um ihn mit erhöhten Rechten auszuführen. - orip
Genau die richtige Lösung für dieses Problem! Wer möchte Runas mit seiner unordentlichen Syntax? - Stabledog
Ich habe mir oft gewünscht, dass der Befehl elevate in Windows eingebaut ist. Es ist ein fantastisches Werkzeug. - nhinkle♦
da ist jetzt ein Erhebung PowerToys Sammlung vom selben Autor, von dem Ein selbst erhöhendes Skript erstellen ist besonders relevant. - matt wilkie
@barlop natürlich nicht. Das würde den Zweck der UAC besiegen. - nhinkle♦


Wenn Sie bereit sind, zu alternativen Konsolen zu wechseln, gibt es ConEmu (Ich bin der Autor). Eine seiner Funktionen - die Möglichkeit, sowohl erhöhte als auch nicht-erhöhte Registerkarten in einem ConEmu-Fenster auszuführen. Registerkarten können auch mit anderen Anmeldeinformationen gestartet werden.

Für den Benutzerkomfort gibt es Batch-Datei csudo.cmd (die leicht zu bash angenommen werden kann). Lesen Sie die vollständige Beschreibung in Projekt-Wiki. Kurz gesagt, wenn Sie beispielsweise einen Befehl von einer bestehenden nicht-erhöhten Registerkarte ausführen

csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess

ConEmu wird gestartet dism in der neuen erhöhten Konsole / Registerkarte (mit vorheriger UAC-Eingabeaufforderung in Vista oder Login-Box in XP).

Standardmäßig csudo startet eine neue Konsole in einem Split (evtl. Änderungen durch Editieren von csudo.cmd Inhalt).

Und natürlich können Sie es umbenennen sudo.cmd wenn Sie "klassisch" mögen sudo Wort.

sudo in ConEmu/Windows


25
2017-10-26 07:52



csudo wurde vor langer Zeit in die ConEmu-Distribution aufgenommen. Keine Verbindung wird überhaupt benötigt. - Maximus
Problem hier ist die neue Konsole Registerkarte wird nach dem sudo'd Befehl unbrauchbar. So können Sie nicht weiter in der erhöhten Registerkarte arbeiten, nur ein press enter or esc to exit Botschaft. - jiggunjer
Natürlich kannst du es nicht. Auch unter Unix bist du zurück auf nicht erhöhten Terminal nach sudo Befehl ist getan seine Arbeit! Du gehst in die falsche Richtung. - Maximus
1) Wenn du ein neues Fenster oder einen neuen Tab öffnest, kannst du es genauso gut behalten, lass den Benutzer Wählen Sie, ob Sie fortfahren möchten. 2) Auf meinem Ubuntu muss ich nicht jedes Mal sudo machen, die Erhöhung dauert ein paar Minuten, denke ich. 3) Diese Anwendung hat eine Million Optionen, aber nichts dafür? Vielleicht bin ich verwöhnt. - jiggunjer


Schnelle Methode:

Drei Schritte zum Hinzufügen von Sudo.

  1. Öffnen Sie die PowerShell.

  2. Kopiere das folgende Skript (Strg + C) und füge es in PowerShell ein (Alt + Leertaste + E + P):

$script_path="$HOME\Documents\Scripts"; if (!(test-path $script_path)) {New-Item -ItemType directory $script_path} if (!(test-path $profile)) { new-item -path $profile -itemtype file -force }". $script_path\sudo.ps1" | Out-File $profile -append; "function sudo(){if (`$args.Length -eq 1){start-process `$args[0] -verb `"runAs`"} if (`$args.Length -gt 1){start-process `$args[0] -ArgumentList `$args[1..`$args.Length] -verb `"runAs`"}}" | Out-File $script_path\sudo.ps1; powershell
  1. Schlagen Eingeben.

Es wird dauerhaft aktiviert sudo Befehl in der PowerShell.

Verwendung:

sudo <process-name> [param1 [param2 [param3]]]

Beispiele:

sudo explorer
sudo notepad
sudo powershell
sudo cmd
sudo taskmgr
sudo tasklist
sudo taskkill /IM Skype.exe /PID 8496

Lange Methode zum Lernen:

Hinweis: Ich habe das Skript aus beiden Artikeln gemischt, um das oben genannte Skript zu erstellen. Anstatt das Skript manuell in den Notizblock einzufügen, fügte ich das hinzu Out-File zu speichernde Anweisungen ps1 und $profile Dateien aus dem Skript.

Tipp: Wenn Sie kein großer Fan von UAC-Popups sind (wie ich), speichern Sie Folgendes in der * .reg-Datei und führen Sie sie aus:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000

23
2017-08-28 10:36



Ich mag die Powershell-Lösung für diese Frage. Dies muss der einfachste Weg sein, etwas zu erhöhen. Vorhandene .bat-Dateien können einfach in POSH konvertiert werden - Mitchell Skurnik
Habe diesen Fehler in Windows 10: . : File C:\Users\User\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system. - sowrov
@sowrov, siehe [dieser Artikel] (www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/). Standardmäßig sind PowerShell-Skripte bei jeder Windows-Installation deaktiviert. Sie müssen es mit diesem Befehl aktivieren set-executionpolicy remotesigned. Andere Optionen neben remotesigned sind in beschrieben offizielle Dokumente. - vulcan raven
Leser beachten dieses ps-Skript ist ein Wrapper für die powershell -c start -verb runas program.exe Funktionalität. Beachten Sie auch kann nicht erhöhen so mit der Eingabeaufforderung cmd (nativ). Powershell ist die beste native Option. - jiggunjer


Wenn Sie dies unter Windows tun, gibt es neben dem Befehl Ausführen als, der in einigen anderen Antworten erwähnt wurde, auch Möglichkeiten, dies mit der Maus zu tun.

Wenn Sie die gedrückt halten Verschiebung Wenn Sie mit der rechten Maustaste auf die meisten ausführbaren Dateien in Windows klicken, sollten Sie einige erweiterte Optionen bemerken. Einer von diesen ist der "Run As..."Option (ich denke, es heißt"Run As Administrator"ab Vista).

Sie können auch eine erweiterte Version von RunAs von Microsoft, genannt ShellRunAsDies hat Verbesserungen gegenüber dem integrierten Befehl "RunAs", sowohl in der Befehlszeile als auch in den grafischen Modi, einschließlich der Möglichkeit, Kontoanmeldeinformationen zu speichern


20
2017-09-17 11:22





Surun ist eine freie Open-Source-Anwendung, die es bestimmten Programmen ermöglicht, mit Administratorrechten zu arbeiten, ohne ein Passwort zu vergeben, ohne die Benutzerregistry zu ändern oder Umgebungsvariablen zu ändern.

Als ich Windows XP benutzte, hilft mir diese App sehr. Beta funktioniert unter Windows 7.


3
2017-11-17 15:24



Surun macht einen tollen Job. Unter Windows 8 und 8.1 sind die Standardeinstellungen jedoch manchmal nicht optimal. Da es die Funktion "Ausführen als" von Windows ersetzt, können Sie keine Eingabeaufforderung mit einem Rechtsklick auf den Startbildschirm starten. - Wolf


Wie Sie wahrscheinlich festgestellt haben, können Sie mit runas als anderer Benutzer ausgeführt werden, aber es kann keine Elevation ausführen und übergibt keine aktuellen Verzeichnisse, Umgebungsvariablen oder lange Befehlszeilen.

Hamilton-C-Schale löst das mit einem echten su und sudo. Mit su können Sie einen Befehl als anderen Benutzer ausführen. Sudo (eigentlich ein Alias ​​für su) lässt Sie einen erhöhten Befehl ausführen. Sie können beides auch tun, wenn Sie als anderer Benutzer erhöht ausgeführt werden. Aktuelle Verzeichnisse, Umgebungsvariablen und lange Befehlszeilen werden über einen Shared-Memory-Handshake zwischen su, der im Kontext des Aufrufers läuft, und einer Kopie seiner selbst, die als Zwischenspiel mit den neuen Berechtigungsnachweisen abläuft, die dann das Kind starten, übergeben. Vollständige Offenlegung: Ich bin der Autor.


3
2017-09-06 15:01





Dieses Skript erledigt die Aufgabe:

@echo Set objShell = CreateObject("Shell.Application") > %temp%\sudo.tmp.vbs
@echo args = Right("%*", (Len("%*") - Len("%1"))) >> %temp%\sudo.tmp.vbs
@echo objShell.ShellExecute "%1", args, "", "runas" >> %temp%\sudo.tmp.vbs
@cscript //NoLogo %temp%\sudo.tmp.vbs

Speichere es als sudo.cmd dann füge es deinem PATH hinzu

Beachten Sie das runas bedeutet in diesem Zusammenhang "Als Administrator ausführen" und nicht "Als anderer Benutzer ausführen"

Von hier genommen und leicht bearbeitet, um den cscript.exe-Header aus der Ausgabe zu entfernen


1
2018-01-10 21:08



Dies erstellt eine neue Konsole. Das neue Fenster wird verschwinden, nachdem der Befehl sudo'd abgeschlossen wurde - Sie können also nicht einmal die Ausgabe lesen. - jiggunjer
Leider schon. Aber es kann für einige grundlegende Befehle (Kopie), GUI-Tools oder das Öffnen eines Admin-Befehls verwendet werden. - Charles Milette