So starten Sie das Programm von der Befehlszeile aus mit erhöhten Rechten

50372
Lukas Cenovsky

Gibt es eine Möglichkeit, ein Programm oder einen Befehl mit erhöhten Rechten auszuführen, wenn ich mich bereits in einer nicht erhöhten Befehlszeile befinde?

Genau dieselbe Aktion, die ausgeführt würde, wenn ich auf die Programmverknüpfung klicke und Als Administrator ausführen auswähle .

Der runas- Befehl ist wahrscheinlich keine Lösung - er fragt nach einem Passwort, aber ich möchte nur den UAC- Dialog.

42

8 Antworten auf die Frage

45
Rustam

In PowerShell gibt es eine Möglichkeit, dies zu tun :

PS> Start-Process powershell -Verb runAs 
Scheint gut zu funktionieren. Von der Befehlszeile aus können Sie beispielsweise den Powershell-Befehl "Start-Process" C: \ program.exe "-Verb runAs" "ausführen marsze vor 9 Jahren 18
Dies sollte als die richtige / beste Antwort markiert werden IMO - es funktioniert ohne Dienstprogramme von Drittanbietern. crimbo vor 8 Jahren 7
Aufbauend auf @marsze - Fwiw, [Argumente] (https://msdn.microsoft.com/de-de/powershell/reference/5.1/microsoft.powershell.management/start-process#-argumentlist) im einfachsten Fall go in einen eigenen zitierten Wert, z. B. Powershell-Befehl "Start-Process 'gvim' 'c: \ windows \ system32 \ drivers \ etc \ hosts' -Verb runAs" `. Vielen Dank! ruffin vor 7 Jahren 4
Wie kann ich die Ausgabe der erhöhten Eingabeaufforderung in mein derzeit ausgeführtes Skript übertragen? wheeler vor 6 Jahren 0
@wheeler, ich bin fast sicher, dass Sie das nicht tun können, aber Sie können einen Exit-Code zurückgeben: $ p = Start-Process Powershell -Verb runAs -ArgumentList "-Befehl` `" & {`` $ Host.SetShouldExit (123)} `` "" -PassThru; $ p.ExitCode` Rustam vor 6 Jahren 0
@Rustam Das kannst du [und ich habe es getan] (https://gist.github.com/wheelerlaw/a426fb609715a2c7cc156c6aabb6076f) :) Es ist ein bisschen hack-y, aber es funktioniert hervorragend. wheeler vor 6 Jahren 0
15
JeffP

Es sieht so aus, als würde dieses Dienstprogramm - Hidden Start - tun, was Sie möchten, wenn Sie die Option / uac verwenden. Hier ist eine Beispiel-Befehlszeile:

hstart /UAC "notepad.exe" 

Dadurch wird der UAC-Dialog angezeigt und nicht wie bei runas nach einem Kennwort gefragt.

enter image description here

Achtung: Dieses kleine Dienstprogramm kostet 20 $. Für diejenigen mit kleiner Tasche verwenden Sie stattdessen RunAdmin :) Rigel vor 7 Jahren 1
Dies wird unter Windows 10 nicht angezeigt will vor 6 Jahren 0
3
Nico57

Aufbauend auf Rustam ‚s Antwort, können Sie:

  • Erstellen Sie eine su.batBatchdatei mit dem folgenden Einzeiler irgendwo in Ihrem Standardwert% PATH%:@powershell start -verb runas %*
  • Fügen Sie diese Funktion Ihrem PowerShell- Profil hinzu :function su

Jetzt können Sie su <command> [parameters]in jeder Shell ausgeben !

2
Rigel

RunAdmin ist ein kleines Dienstprogramm (150 KB), mit dem Sie ein Programm von der Befehlszeile aus mit erhöhten Rechten ausführen können (es wird die Benutzerkontensteuerung angezeigt). Und das Gegenteil von Hidden Start ist frei.

2
will

Dies funktioniert für mich auf allen Plattformen, einschließlich Windows 10. Meine Anforderungen sind einfach. Vielleicht können Sie den Ansatz anpassen, wenn Sie Strom benötigen .

Ich kam mit einem kleinen Skript mit Namen sudo.cmdnamens Linux sudo aus. Es funktioniert gut genug, denke ich. Ich habe die Anforderungen und die Schritte beschrieben, die zu befolgen sind, und das Skript befindet sich am unteren Rand mit einem Beispiel. Zuerst ein Wort der Warnung.

WARNUNG : Der Befehl wird standardmäßig im Windows-Systemverzeichnis ausgeführt. Sie wollencdzuerst irgendwo sicher sein.

Anforderungen :

  • Führen Sie den Befehl mit Administratorrechten aus Windows .CMD
    oder der Cmd-Shell aus.
  • erfordern die normalen Windows-Berechtigungsprüfungen für den Befehl
    • Mit anderen Worten funktioniert der Befehl NICHT, es sei denn, ich bin bereits mit einem privilegierten Konto angemeldet.
  • Führen Sie den Befehl mit Administratorberechtigung aus und fahren Sie fort, wenn Sie innerhalb eines Skripts aufgerufen werden. Warten Sie also, bis der Befehl abgeschlossen ist.
  • Sei einfach, damit es immer funktioniert
  • Sie müssen nicht jedes Mal ein Kennwort eingeben, wenn ich bereits angemeldet bin.
    • Eine bessere Methode wäre, wenn ich einmal das Kennwort eingeben kann, wie dies auch der eigentliche sudoBefehl unter Linux ist.

Lösung :

  1. Erstellen Sie ein Befehlsskript, um alle übergebenen Argumente auszuführen. sudo.cmd
  2. Erstellen Sie eine Windows-Verknüpfung für das Befehlsskript sudo.lnk.
  3. Legen Sie die sudoAbkürzung in Ihren Windows-PFAD ein, damit er sichtbar ist.
  4. Bearbeiten Sie die Verknüpfungseigenschaften und machen Sie den Start in:Pfad leer.
  5. Klicken Sie auf die AdvancedSchaltfläche [ ] - CheckRun as Administrator
  6. Aktivieren Sie Verknüpfungen in Ihrem Windows-Pfad und verwenden Sie die PATHEXT-Umgebungsvariable, nämlich.
d:> echo %PATHEXT% .lnk;.EXE;.CMD;.BAT;.COM 

Wenn Sie sudo dirin die Befehlszeile eingeben, zeigt Windows das

User Account Control  Do you want to allow this app to make changes to this device?  [YES] [NO] 

Zugriffssteuerungs-Popup Wenn Sie auf "[ NO]" klicken, passiert nichts. Windows zeigt eine " Access is denied." Nachricht an.

Wenn Sie auf "[ YES]" klicken, wird der Verzeichnisbefehl mit einem erhöhten Privileg ausgeführt. Natürlich möchten Sie wahrscheinlich etwas Interessanteres wie das Stoppen oder Abfragen eines Dienstes:

 sudo sc query SDRSVC 

SDRSVC ist der Dienstname für "Windows-Sicherungsdienst". Dies zeigt Folgendes in einem separaten Cmd-Fenster:

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

Das sudo.cmdSkript selbst ist sehr einfach. Wie gesagt, meine Bedürfnisse sind einfach. Ich möchte nur Dienste stoppen und starten, während ich Code zum Testen bereitstelle.

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 

Der pauseBefehl wartet darauf, dass Sie die Ergebnisse überprüfen. Wenn Sie pausedas Verwaltungsfenster entfernen, wird geschlossen und Sie wissen nicht, ob der Befehl funktioniert hat oder nicht. Der ERRORLEVELBefehl wird ebenfalls zurückgegeben.

0
John T

Werfen Sie einen Blick auf Start ++ - es hat diese Funktionalität zusammen mit vielen anderen nützlichen Dingen. Um mit der UAC-Eingabeaufforderung zu arbeiten, verwenden Sie einfach sudoIhren Programmnamen in der Befehlszeile, wie hier gezeigt:

alt text

Hier sind einige weitere Funktionen (Sie können auch eigene hinzufügen):

alt text

alt text

Sieht auch gut aus, aber ich verwende bereits FARR, das ähnliche Funktionen wie Start ++ und mehr hat (natürlich außer sudo). Lukas Cenovsky vor 14 Jahren 0
Der Link sagt _Willkommen zu: brandontools.com. Diese Webseite wird KOSTENLOS geparkt. Möchten Sie brandontools.com kaufen? xmojmr vor 9 Jahren 2
Wie @xmojmr sagt, ist diese Site tot. Wenn Sie einen neuen Ort kennen (ich habe ihn nicht so schnell gefunden), sollten Sie den Link in der Antwort aktualisieren. Abel vor 6 Jahren 1
0
Alex

Dies funktioniert für Windows 10, wurde nicht mit anderen Windows-Versionen getestet.

Ein Beispiel zum Öffnen von Notepad mit Administratorrechten aus cmd.exe, das die Powershell startet, die nach erhöhten Berechtigungen fragt.

C:\>start powershell -command "&" 

Dadurch erhalten Sie ein UAC-Dialogfeld (falls aktiviert) mit [Ja] [Nein] oder Sie werden nach dem Administratorkennwort gefragt.

Ein weiteres Beispiel zum Öffnen der Hosts-Datei mit Notepad wäre:

C:\>start powershell -command "&" 

Weitere Informationen: https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell.management/start-process?view=powershell-6

-1
Michel

Sie können __COMPAT_LAYER = RunAsAdmin setzen. Dann werden die Befehle in einem separaten erhöhten Cmd ausgeführt

Beispiel Fledermaus:

;Run next command elevated to Admin. set __COMPAT_LAYER=RunAsAdmin reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\" /t REG_DWORD /v "NoBackgroundPolicy" /d "1" ;Disable elevation set __COMPAT_LAYER= ;continue non elevated reg add "HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Internet Explorer\Main" /t REG_SZ /v "Start Page" /d "https://www.google.com" /f 

Alle Optionen für den Kompatibilitätsmodus sind im MS Application Compatibility Toolkit aufgeführt.

Diese Batchdatei ist furchtbar kaputt. Sie können `;` nicht als Kommentar-Trennzeichen verwenden. Msgstr "Stapeldateien erkennen das Semikolon nicht und verursachen im Allgemeinen eine Fehlermeldung zu einem fehlerhaften Befehl." DavidPostill vor 7 Jahren 0