Sie können mein Skript Batch_Admin verwenden, um den Administrator automatisch für die Verwendung in jedem Typ von Batch-eigenem Skript, BAT oder CMD zu erhöhen. Diese Funktion gewährleistet die Arbeit in einer Standardumgebung, mit Standardwerkzeugen und auf die gleiche Weise in verschiedenen Windows-Systemen. Es werden mehrere standardmäßige und integrierte Windows-Befehle verwendet. Verwenden Sie keine anderen externen Skripte. Es kann verwendet werden, um ein beliebiges Programm als Administrator aufzurufen, nicht nur Scripts Batch. Es reicht aus, ein kleines Skript zu erstellen, das dann das Programm aufruft, das die Berechtigung Administartor benötigt. Platzieren Sie dies in einem beliebigen Suchpfadordner (von% PATH%).
Um es zu verwenden, fügen Sie einfach die folgende Zeile (genau wie) in das übergeordnete Stapelskript ein, das als Administrator ausgeführt werden soll. Dies geschieht am besten am oberen Rand unseres übergeordneten Skripts und es ist am besten, dass zuerst einige Unterskripte, die über den CALL aufgerufen werden, weiter unten ausführlich erklärt werden.
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, solange sie noch nicht über Administratorrechte verfügt, z. Setzen Sie vor dem Aufruf von Batch_Admin für 5 Sekunden 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
• Batch führt das Skript oder BAT oder CMD aus
• Skriptanrufer können lange Namensräume in Anführungszeichen enthalten
• Geben Sie alle Parameter zurück, die das über die Befehlszeile übergebene Masterskript aufruft, als ob keine Übertragung des Aufrufs stattgefunden hätte, und beginnen Sie etwas von vorne, auch mit Sonderzeichen wie Ausrufezeichen (!) Und Prozentzeichen (%) sowie mit Klammern ()
• Hält einen Master-Skript-Speicherort, wenn der Aufruf in dem Verzeichnis erfolgte, in dem dieses Skript der Master ist
• Auxiliary zeigt eine Meldung an, wenn wir die Variable "ShowAdminInfo" vor uns setzen, z. für 5 Sekunden, die den sofortigen Übergang der Rechte des Administrators verhindern können, der zusätzliche Informationen und die Möglichkeit einer informierten Entscheidung gibt. Beispiele für die Einstellung, die festgelegt werden muss: SET ShowAdminInfo = 5 Da diese Variable nicht definiert ist, wird sie standardmäßig nicht angezeigt.
• Das Skript ruft auch den Systemsuchpfad% PATH% und eine Netzwerkressource auf, z. B .: \ Computer \ share \ test.bat
• Verhindert Missverständnisse beim Schreiben der erforderlichen Hilfsdateien, wenn das Skript fast gleichzeitig mehrere Batch_Admin aufruft. Es wird die Zufallszahl von 1 bis 100 verwendet
• Am besten verwenden Sie es jedoch im übergeordneten Skript. Der Übergang zu Administratorrechten setzt immer voraus, dass Sie das Skript in einem neuen Fenster in einer neuen Umgebung erneut vollständig ausführen, ohne auf die zuvor in unserem Skript festgelegten Variablen zurückzugreifen, und die Werte dieser Variablen wurden dann nicht an den Aufruf als Administrator übergeben . Nur das Skript wird erneut ausgeführt.
Unten ein vollständiges Skript Batch_Admin. Erweiterte Informationen dazu finden Sie auf meiner Seite.
Kopieren Sie den folgenden Text in den Editor und speichern Sie ihn auf der Festplatte als: 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) ***