Ist es möglich, eine Batchdatei automatisch als Administrator auszuführen?

Ist es möglich, eine Batchdatei automatisch als Administrator auszuführen?

Ich frage mich, ob es möglich ist,automatischÖffnen Sie eine Batchdatei als Administrator, wenn Sie auf die Batchdatei doppelklicken, da die Befehle mit Administratorrechten ausgeführt werden müssen.

Hinweis: Die Lösung, mit der rechten Maustaste auf die Datei zu klicken und auf zu klicken Run As Administrator, ist mir bereits bekannt, es handelt sich dabei jedoch nicht um eine automatische Lösung.

Antwort1

Ja, Sie können eine Batchdatei mit Administratorrechten ausführen. Leider können Sie dies nicht direkt aus der Batchdatei selbst tun. Sie müssten zuerst eine Verknüpfung dieser Batchdatei erstellen und die Eigenschaften für diese Verknüpfung ändern, damit dies funktioniert.

Um eine Verknüpfung zu erstellen, gibt es viele Möglichkeiten, aber die einfachste und schnellste Möglichkeit ist die Verwendung derSenden anim Kontextmenü.

Right click batch file > Send to > Desktop (create shortcut)

Natürlich können Sie die Verknüpfung dorthin senden, wo Sie möchten. Um die Batchdatei als Administrator auszuführen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie mit der rechten Maustaste auf die Verknüpfung, die Sie gerade erstellt haben (sie sollte sich auf dem Desktop oder wo auch immer Sie sie senden befinden) und wählen Sie „Eigenschaften“.
  2. Klicken Sie unter der Registerkarte „Verknüpfung“ auf die Schaltfläche „Erweitert...“.
  3. Aktivieren Sie das Kontrollkästchen Als Administrator ausführen und drücken Sie OK, um sowohl das modale Fenster als auch das Haupteigenschaftenfenster zu öffnen.
  4. Führen Sie die Verknüpfung durch Doppelklicken aus. Die Batchdatei sollte dann als Administrator ausgeführt werden.

Antwort2

Veröffentlicht ineine Antwortvon Ben Gripka auf eine andere Frage:

REM --add the following to the top of your bat file--


@echo off

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

Antwort3

unter Windows 7

  1. Erstellen Sie eine Verknüpfung zu dieser Batchdatei

  2. Klicken Sie mit der rechten Maustaste auf die Verknüpfungsdatei

  3. KlickenSchaltfläche "Weiter"um ein Kontrollkästchen zum Ausführen als Administrator zu finden

Schauen Sie sich den Screenshot unten an

Bildschirmfoto

Antwort4

Sie können mein Skript Batch_Admin verwenden, um den Administrator automatisch zu erhöhen, um ihn in jeder Art von Batch-Skript, BAT oder .CMD zu verwenden. Diese Funktion stellt sicher, dass sie in einer Standardumgebung, mit Standardtools und auf dieselbe Weise in verschiedenen Windows-Systemen funktioniert. Sie verwendet mehrere standardmäßige und integrierte Windows-Befehle. Verwenden Sie keine anderen externen Skripte. Sie können damit jedes Programm als Administrator aufrufen, nicht nur Batch-Skripte. Es genügt, ein kleines Skript zu erstellen, das dann das Programm aufruft, das die Berechtigung Administrator benötigt. Platzieren Sie dieses in einem beliebigen Suchpfadordner (von %PATH%).

Um es zu verwenden, fügen Sie einfach die folgende Zeile (genau so) in das übergeordnete Batch-Skript ein, das als Administrator ausgeführt werden soll. Dies geschieht am besten am Anfang unseres übergeordneten Skripts und es ist am besten, zuerst einige Unterskripte auszuführen, die über den CALL weiter aufgerufen werden (siehe detaillierte Erklärung unten).

net session >nul 2>nul&if errorlevel 1  Batch_Admin "%~0" %*

Dies kann in jedes untergeordnete Skript eingefügt werden, das mit der CALL-Syntax aufgerufen wird. Um eine Nachricht anzuzeigen, während der Benutzer noch keine Administratorrechte hat, z. B. 5 Sekunden vor dem Aufruf von Batch_Admin, setzen Sie die Variable „ShowAdminInfo“ auf die Anzahl der Sekunden

SET ShowAdminInfo=5
net session >nul 2>nul&if errorlevel 1  Batch_Admin "%~0" %*

So funktioniert es:

• Ruft UAC.ShellExecute über VBScript auf, um Benutzerberechtigungen abzurufen

• Das Skript wird im Batch oder per BAT bzw. CMD ausgeführt.

• Skriptaufrufer können lange Namen haben, die in Anführungszeichen im Aufruf enthalten sind

• Geben Sie alle Parameter des über die Kommandozeile übergebenen Aufrufs des Master-Skripts zurück, als hätte es keine Übertragung des Aufrufs gegeben und beginnen Sie von vorne, auch mit Sonderzeichen, wie Ausrufezeichen (!) und Prozentzeichen (%), sowie mit Klammern ()

• Hält einen Master-Skript-Speicherort, wenn der Aufruf in dem Verzeichnis stattfand, in dem dieses Skript das Master-Skript ist

• Wenn wir die Variable „ShowAdminInfo“ vor uns setzen, wird eine zusätzliche Meldung angezeigt, z. B. für 5 Sekunden. Dies kann den sofortigen Übergang der Rechte des Administrators verhindern und zusätzliche Informationen und die Möglichkeit einer fundierten Entscheidung bieten. Beispiele für Einstellungen, die gesetzt werden müssen: SET ShowAdminInfo=5 Standardmäßig wird diese Variable nicht angezeigt, da sie nicht definiert ist.

• Das Skript ruft auch den Systemsuchpfad %PATH% und Netzwerkressourcen auf, beispielsweise: \Computer\share\test.bat

• Verhindert Missverständnisse beim Schreiben der notwendigen Hilfsdateien, wenn das Skript mehrere Batch_Admin fast gleichzeitig aufruft. Es verwendet die Zufallszahl von 1 bis 100

• Am besten ist es jedoch, es auf das übergeordnete Skript anzuwenden. Der Wechsel zu Administratorrechten erfordert immer, dass Sie das Skript erneut vollständig ausführen, in einem neuen Fenster, in einer neuen Umgebung, ohne Rückgriff auf die Variablen, die zuvor in unserem Skript festgelegt wurden, und die Werte dieser Variablen, die beim Aufruf als Administrator nicht übergeben wurden. Das Skript wird einfach erneut ausgeführt.

Nachfolgend ein vollständiges Skript Batch_Admin. Ausführlichere Informationen hierzu finden Sie auf meiner Site.

Kopieren Sie den folgenden Text in den Editor und speichern Sie ihn auf der Festplatte unter: Batch_Admin.bat

@echo off
if "%~1"=="" (echo *** Batch_Admin ***&echo.&echo Automatically get admin rights for another Batch. See info inside.&TIMEOUT /T 30>nul&goto:eof)

::  A D M I N I S T R A T O R   - Automatically get admin rights for script batch. Paste this on top:    net session >nul 2>nul&if errorlevel 1  Batch_Admin "%~0" %*
::                                Also keep Batch directory localisation and then set variable:   PATH_BAT
::                                if earlier variable "ShowAdminInfo" is empty (not defined) then no info, else showing info with number of seconds
::
::                                Elaboration:  Artur Zgadzaj
setlocal
setlocal DisableDelayedExpansion

SET "Localy="
if exist "%~1"      SET "Localy=YES"
if exist "%~1.BAT"  SET "Localy=YES"
if exist "%~1.CMD"  SET "Localy=YES"
if defined Localy   FOR %%I IN ("%~1") DO SET "PATH_BAT=%%~dI%%~pI"

 SET P1=%~1
 SET Parameters=%*
 SET Parameters=%Parameters:!=^^!%
setlocal EnableDelayedExpansion
 SET Parameters=!Parameters:%P1%=!
 SET Parameters=!Parameters:%%=%%%%!
setlocal DisableDelayedExpansion
 SET Parameters=%Parameters:~3%

net session >nul 2>nul&if not errorlevel 1  goto Administrator_OK

if not defined ShowAdminInfo   goto skip_message_Administrator
echo.
echo Script:  %~1
echo.
echo *****************************************************************
echo ***    R U N N I N G     A S     A D M I N I S T R A T O R    ***
echo *****************************************************************
echo.
echo Call up just as the Administrator. You can make a shortcut to the script and set:
echo.
echo          shortcut ^> Advanced ^> Running as Administrator
echo.
echo     Alternatively run once "As Administrator"
echo     or in the Schedule tasks with highest privileges
echo.
echo Cancel Ctrl-C or wait for launch  %ShowAdminInfo%  seconds ...
TIMEOUT /T %ShowAdminInfo% > nul

:skip_message_Administrator
MD %TEMP% 2> nul
SET /A $Admin$=%RANDOM% * 100 / 32768 + 1

SET "Percent="
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul
echo %Parameters% > "%TEMP%\$Admin_%$Admin$%_Test.bat"
if not exist "%TEMP%\$Admin_%$Admin$%_Test.bat"  SET Percent=^"
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul

echo @SET "PATH_BAT=%PATH_BAT%"               > "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
echo @SET "BatchFullName=%BatchFullName%"    >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
if defined Localy  (echo @CD /D "%PATH_BAT%" >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat")
echo @"%~1" %Parameters% %Percent% >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"

echo SET UAC = CreateObject^("Shell.Application"^)                                   > "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
echo UAC.ShellExecute "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat", "", "", "runas", 1 >> "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
"%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
endlocal
exit /B

:Administrator_OK
"%~1" %Parameters%
goto:eof
REM *** A D M I N I S T R A T O R  - Automatically get admin rights  (The End)  ***

verwandte Informationen