Ich habe diese Zeile in meiner BAT-Datei:
"Example1Server.exe"
Ich möchte dies im Administratormodus ausführen. Wie kann ich den bat-Code so ändern, dass er als Administrator ausgeführt wird?
Ist das richtig? Muss ich die Anführungszeichen setzen?
runas /user:Administrator invis.vbs Example1Server.exe
Sie verwenden runas
, um ein Programm als bestimmten Benutzer zu starten:
runas /user:Administrator Example1Server.exe
Für die andere Antwort müssen Sie das Kennwort des Administratorkontos eingeben. Das Ausführen unter einem Konto in der Administratorgruppe ist nicht dasselbe wie als Administrator ausführen siehe: UAC in Wikipedia
Windows 7-Anweisungen
Um als Administrator ausgeführt zu werden, erstellen Sie eine Verknüpfung für die Stapeldatei.
Dann können Sie die Verknüpfung als Administrator festlegen:
Wenn Sie nun auf die Verknüpfung doppelklicken, werden Sie zur Bestätigung der Benutzerkontensteuerung aufgefordert und anschließend Als Administrator ausführen (was sich, wie gesagt, von der Ausführung unter einem Konto in der Administratorgruppe unterscheidet)
Überprüfen Sie den Screenshot
Hinweis: Wenn Sie "Als Administrator ausführen" ausführen, stimmt das aktuelle Verzeichnis (Pfad) nicht mit der Bat-Datei überein. Dies kann in manchen Fällen zu Problemen führen, dass sich die bat-Datei auf relative Dateien daneben bezieht. In meinem Windows 7 wird zum Beispiel SYSTEM32 anstelle des Speicherorts der Bat-Datei angegeben! Um dies zu umgehen sollten Sie verwenden
cd "%~dp0"
oder besser
pushd "%~dp0"
um sicherzustellen, dass sich das Verzeichnis unter dem Pfad befindet, in dem sich die bat-Datei befindet.
Wenn Sie ein Drittanbieter-Dienstprogramm verwenden können, ist hier ein elevate
Befehlszeilen-Dienstprogramm .
Dies ist die Verwendungsbeschreibung:
Usage: Elevate [-?|-wait|-k] prog [args]
-? - Shows this help
-wait - Waits until prog terminates
-k - Starts the the %COMSPEC% environment variable value and
executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog - The program to execute
args - Optional command line arguments to prog
Sie können den Befehl nircmd.exe ' elevate verwenden
NirCmd-Befehlsreferenz - Erhöhen Sie
elevate [Program] {Command-Line Parameters}
Nur für Windows Vista/7/2008: Führen Sie ein Programm mit Administratorrechten aus. Wenn das [Programm] ein oder mehrere Leerzeichen enthält, müssen Sie es in Anführungszeichen setzen.
Beispiele:
elevate notepad.exe
elevate notepad.exe C:\Windows\System32\Drivers\etc\HOSTS
elevate "c:\program files\my software\abc.exe"
PS: Ich benutze es bei Win 10 und es funktioniert
Ich glaube, ich habe eine Lösung für das Passwortproblem ... Dieses einzelne Argument ist wirklich erstaunlich. Es fragt einmal nach dem Passwort und danach nie wieder nach dem Passwort. Auch wenn Sie es in ein anderes Programm schreiben, werden Sie nicht nach dem Kennwort gefragt. Hier ist es:
runas /user:Administrator /savecred Example1Server.exe
konvertieren Sie Ihre Batch-Datei mit diesem Tool in die EXE-Datei: http://www.battoexeconverter.com/ und dann können Sie sie als Administrator ausführen
go get github.com/mattn/Sudo
Dann
Sudo Example1Server.exe
Mein Experimentieren zeigt, dass der Befehl runas die Domäne des Administrators enthalten muss (zumindest in der Umgebungskonfiguration meiner Organisation):
runas /user:AdminDomain\AdminUserName ExampleScript.bat
Die Antworten von Kerrek SB und Ed Greaves führen die Zieldatei unter dem Benutzer admin aus. Wenn das Zielskript eine .bat-Datei ist, werden sie nicht ausgeführt. Tatsächlich sollten Sie die Befehle im Skript so aktualisieren, dass sie über Administratorrechte des Administrators verfügen, zumindest wenn Sie versuchen, Registrierungsschlüssel hinzuzufügen oder zu ändern, die ansonsten durch Gruppenrichtlinien gesperrt sind.
Weiß jemand, wie man tatsächlich bat-file (CMD) -Befehle auf Administratorrechte aktualisiert?
Fügen Sie dies einfach oben in Ihre bat-Datei ein:
set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )
Es wird auf admin erhöht und verbleibt im richtigen Verzeichnis. Getestet unter Windows 10.
Sollte auf jeden Fall funktionieren, indem Sie diese Zeilen oben in Ihre bat-Datei einfügen. Es rettet buchstäblich das Leben!
set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )
Verwenden Sie den vollständigen Pfad des physischen Laufwerks\zur Ziel-Batchdatei in den Eigenschaften der Verknüpfung.
Dies funktioniert nicht in Windows 10, wenn Sie untergeordnete Laufwerke verwenden, wie ich es zuerst versucht habe ...