Wie codiere ich eine BAT-Datei, um sie immer als Administratormodus auszuführen?

149

Ich habe diese Zeile in meiner BAT-Datei:

"Example1Server.exe"

Ich möchte dies im Administratormodus ausführen. Wie ändere ich den Fledermauscode, um ihn als Administrator auszuführen?

Ist das richtig? Muss ich die Anführungszeichen setzen?

runas /user:Administrator invis.vbs Example1Server.exe
Karikari
quelle

Antworten:

71

Sie verwenden runas, um ein Programm als bestimmter Benutzer zu starten:

runas /user:Administrator Example1Server.exe
Kerrek SB
quelle
6
@karikari: Ein Name wie dieser ( Example1Server.exe) muss nicht in Anführungszeichen gesetzt werden, aber in einigen anderen Fällen (wie Leerzeichen im Namen :) Example1 Server.exewürden Sie sie tatsächlich benötigen. Sie können die Anführungszeichen auch dann verwenden, wenn sie nicht benötigt werden.
Andriy M
18
Das Administratorkonto heißt möglicherweise nicht Administrator
Anders
9
@Anders: Nein, vielleicht nicht; Ich gehe davon aus, dass das OP "das Muster erkennen" kann. Dies war keine plz-give-me-teh-codez-Antwort: -S Übrigens sollte ich hinzufügen, dass das OP möglicherweise einen ausführlicheren Befehl wie runas /User:abc "csript myscript.vbs"oder wünscht runas /User:abc "cmd /c start ...".
Kerrek SB
16
Ich fürchte, diese Antwort ist nicht das, was 90% der Besucher wollen, da es noch schwieriger ist, mit der rechten Maustaste zu klicken -> als Administrator auszuführen, selbst wenn sie technisch korrekt ist. Überprüfen Sie erneut die andere Antwort. Es ist genau das, was die meisten wollen.
j riv
13
Nein, diese Antwort ist technisch falsch. Das Ausführen als Administrator ist nicht dasselbe wie das Ausführen unter einem Benutzer, dessen Name zufällig Administrator ist, und die Berechtigungen sind unterschiedlich. Siehe die andere Antwort.
Alexander Gelbukh
370

Für die andere Antwort müssen Sie das Kennwort des Administratorkontos eingeben. Das Ausführen unter einem Konto in der Administratorgruppe entspricht nicht dem Ausführen als Administrator ( siehe " Benutzerkontensteuerung auf Wikipedia"

Windows 7-Anweisungen

Um als Administrator ausgeführt zu werden, erstellen Sie eine Verknüpfung für die Batchdatei.

  1. Klicken Sie mit der rechten Maustaste auf die Batchdatei und klicken Sie auf Kopieren
  2. Navigieren Sie zu der gewünschten Verknüpfung
  3. Klicken Sie mit der rechten Maustaste auf den Hintergrund des Verzeichnisses
  4. Wählen Sie Verknüpfung einfügen

Anschließend können Sie die Verknüpfung so einstellen, dass sie als Administrator ausgeführt wird:

  1. Klicken Sie mit der rechten Maustaste auf die Verknüpfung
  2. Wählen Sie Eigenschaften
  3. Klicken Sie auf der Registerkarte Verknüpfung auf Erweitert
  4. Aktivieren Sie das Kontrollkästchen "Als Administrator ausführen".
  5. Klicken Sie auf OK, OK

Wenn Sie nun auf die Verknüpfung doppelklicken, werden Sie zur Bestätigung der Benutzerkontensteuerung aufgefordert und anschließend als Administrator ausgeführt (was sich, wie oben erwähnt, von der Ausführung unter einem Konto in der Administratorgruppe unterscheidet).

Überprüfen Sie den Screenshot unten

Bildschirmfoto

Hinweis: Wenn Sie dies tun, um als Administrator ausgeführt zu werden, stimmt das aktuelle Verzeichnis (Pfad) nicht mit der bat-Datei überein. Dies kann in vielen Fällen zu Problemen führen, wenn die Bat-Datei auf relative Dateien daneben verweist. In Windows 7 lautet das aktuelle Verzeichnis beispielsweise SYSTEM32 anstelle des Speicherorts der Bat-Datei! Um dies zu umgehen , sollten Sie verwenden

cd "%~dp0"

oder besser

pushd "%~dp0"

um sicherzustellen, dass sich cur dir auf demselben Pfad befindet, auf dem sich die bat-Datei befindet.

Ed Greaves
quelle
8
Ah, das war in der Tat verborgen (die meisten von uns dachten nicht, dass dieser erweiterte Button diese Option enthält). Ich bin mir fast sicher, wer auch immer an die andere komplexe Antwort dachte, wusste das nicht. Dies ist die Antwort, die über 90% der Besucher wünschen.
j riv
1
Genau. Das sollte die Antwort sein. Ich habe auch einen Screenshot hinzugefügt, um das Auffinden des Voraus- Buttons zu erleichtern
fedmich
1
Dies gilt auch für Windows Server 2012 R2.
Garec
3
Dies funktioniert bei mir weder unter Windows 10 noch unter Windows 7. Wenn ich versuche, als Administrator ausgeführt zu werden, entweder durch Klicken mit der rechten Maustaste auf die BAT-Datei und "Als Administrator ausführen" oder mithilfe der hier beschriebenen Technik, blinkt die Batchdatei für eine Sekunde wird dann sofort geschlossen, ohne dass Befehle oder Programme in der Batchdatei ausgeführt werden. Ich habe versucht, sehr einfache Batch-Dateien auszuführen, die nur eine "Hallo Welt" wiedergeben, und auch sie schlagen auf diese Weise fehl. Das ist sehr frustrierend. Ich konnte bisher keine Lösung finden.
Jonathan Elkins
1
@ JonathanElkins Haben Sie versucht, eine Pause am Ende der Batch-Datei hinzuzufügen?
Ed Greaves
32

Fügen Sie dies einfach oben in Ihre Fledermausdatei 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 zum Administrator erhoben und bleibt auch im richtigen Verzeichnis. Getestet unter Windows 10.

Vater
quelle
1
Getestet in Windows 7 und funktioniert super. Aber können Sie erklären, was es tut? Ich bin nicht mit Fledermausdateien vertraut.
Sunfloro
1
Es erstellt eine VBScript-Datei mit Code, der Sie zum Administrator erhebt (falls Sie dies noch nicht getan haben), und führt die bat-Datei erneut aus, diesmal als Administrator.
Sire
1
Was ich genau suche! Keine zusätzlichen Änderungen oder zusätzliche Datei erforderlich!
MSS
1
Was ist getadmin.vbs?
Kiquenet
4
Das Hinzufügen Ihrer beiden Codezeilen zu meiner vorhandenen Batchdatei ist eine gute Lösung für mich. Ich musste auch exitam Ende meiner Batch-Datei hinzufügen , sonst würde ich an der Eingabeaufforderung belassen. Dies liegt wahrscheinlich daran, dass die .vbs eine zweite Eingabeaufforderung startet.
Ben
10

Wenn Sie ein Dienstprogramm eines Drittanbieters verwenden können, finden Sie hier ein elevateBefehlszeilenprogramm .

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
Aphorie
quelle
elevate.exeFelsen!
Sangbok Lee
8

Sie können mit nircmd.exe ‚s elevate Befehl

NirCmd-Befehlsreferenz - Erhöhen

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

Dheeraj Bhaskar
quelle
6

Konvertieren Sie Ihre Batch-Datei mit diesem Tool in .exe: http://www.battoexeconverter.com/. Anschließend können Sie sie als Administrator ausführen

xxedxx
quelle
2
Denken Sie daran, dass viele Antivirenprogramme sehr empfindlich auf Exe-Dateien reagieren, die auf diese Weise erstellt wurden. Das "Konvertieren / Verschlüsseln" von Batchdateien auf diese Weise ist eine alte Methode, die von Schadprogrammen verwendet wird.
Hamy
Wenn Sie diese Domain mit Symantec analysieren - Bedrohungstyp: othermalware Bedrohungsgrund: Domain, die als Serving-Malware gemeldet und überprüft wurde. Identifiziert als böswillige Domain oder URL.
Sunil
Schlechter Vorschlag!
Vlad
6
go get github.com/mattn/sudo

Dann

sudo Example1Server.exe
mattn
quelle
6

Ich glaube, ich habe eine Lösung für das Passwortproblem. Dieses einzige Argument ist wirklich erstaunlich. Es fragt einmal nach dem Passwort und dann nie wieder danach. Selbst wenn Sie es in ein anderes Programm einfügen, werden Sie nicht nach dem Passwort gefragt. Hier ist es:

runas /user:Administrator /savecred Example1Server.exe

Anonym
quelle
4
  1. Mein Experimentieren zeigt, dass der Befehl runas die Domäne des Administratorbenutzers enthalten muss (zumindest im Umgebungssetup meiner Organisation):

    runas /user:AdminDomain\AdminUserName ExampleScript.bat
    

    Wenn Sie die Domäne des Administratorbenutzers noch nicht kennen, führen Sie eine Instanz der Eingabeaufforderung als Administratorbenutzer aus und geben Sie den folgenden Befehl ein:

    echo %userdomain%
    
  2. Die Antworten von beiden Kerrek SB und Ed Greaves führen die Zieldatei unter dem Administrator aus. Wenn es sich bei der Datei jedoch um ein Befehlsskript (.bat-Datei) oder ein VB-Skript (.vbs-Datei) handelt, wird versucht, die normale Anmeldung auszuführen In der Benutzerumgebung (z. B. beim Ändern von Registrierungseinträgen) erhalten Sie möglicherweise nicht die gewünschten Ergebnisse, da die Umgebung, in der das Skript tatsächlich ausgeführt wird, die des Administrators und nicht des normal angemeldeten Benutzers ist. Wenn es sich bei der Datei beispielsweise um ein Skript handelt, das in der HKEY_CURRENT_USER-Struktur der Registrierung ausgeführt wird, ist der betroffene „aktuelle Benutzer“ der Administrator und nicht der Benutzer mit normaler Anmeldung.

pstraton
quelle
0

Verwenden Sie das vollständige physische Laufwerk \ Pfad zu Ihrer Ziel-Batchdatei in den Verknüpfungseigenschaften.

Dies funktioniert unter Windows 10 nicht, wenn Sie Subst-Laufwerke verwenden, wie ich es zuerst versucht habe ...

Samiamias
quelle