In PowerShell gibt es eine Möglichkeit, dies zu tun :
PS> Start-Process powershell -Verb runAs
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.
In PowerShell gibt es eine Möglichkeit, dies zu tun :
PS> Start-Process powershell -Verb runAs
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.
Aufbauend auf Rustam ‚s Antwort, können Sie:
su.bat
Batchdatei mit dem folgenden Einzeiler irgendwo in Ihrem Standardwert% PATH%:@powershell start -verb runas %*
function su
Jetzt können Sie su <command> [parameters]
in jeder Shell ausgeben !
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.
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.cmd
namens 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 wollencd
zuerst irgendwo sicher sein.
Anforderungen :
sudo
Befehl unter Linux ist.Lösung :
sudo.cmd
sudo.lnk
.sudo
Abkürzung in Ihren Windows-PFAD ein, damit er sichtbar ist.Start in:
Pfad leer.Advanced
Schaltfläche [ ] - CheckRun as Administrator
d:> echo %PATHEXT% .lnk;.EXE;.CMD;.BAT;.COM
Wenn Sie sudo dir
in 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.cmd
Skript 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 pause
Befehl wartet darauf, dass Sie die Ergebnisse überprüfen. Wenn Sie pause
das Verwaltungsfenster entfernen, wird geschlossen und Sie wissen nicht, ob der Befehl funktioniert hat oder nicht. Der ERRORLEVEL
Befehl wird ebenfalls zurückgegeben.
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 sudo
Ihren Programmnamen in der Befehlszeile, wie hier gezeigt:
Hier sind einige weitere Funktionen (Sie können auch eigene hinzufügen):
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
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.