Nicht nur prüfen, sondern automatisch Admin-Rechte ERHALTEN
aka Automatische UAC für Win 7/8/8.1 ff. : Das folgende ist ein wirklich cooles Gerät mit einer weiteren Funktion: Dieses Batch-Snippet prüft nicht nur auf Admin-Rechte, sondern holt sie sich automatisch! (und testet vorher, ob es auf einem UAC-fähigen Betriebssystem läuft).
Mit diesem Trick brauchen Sie nicht mehr mit der rechten Maustaste auf Ihre Batch-Datei "mit Administratorrechten" zu klicken. Wenn Sie vergessen haben, die Datei mit erweiterten Rechten zu starten, wird automatisch die UAC aktiviert! Außerdem wird zunächst getestet, ob das Betriebssystem UAC benötigt/bereitstellt, so dass es sich z.B. für Win 2000/XP bis Win 8.1- getestet korrekt verhält.
@echo off
REM Quick test for Windows generation: UAC aware or not ; all OS before NT4 ignored for simplicity
SET NewOSWith_UAC=YES
VER | FINDSTR /IL "5." > NUL
IF %ERRORLEVEL% == 0 SET NewOSWith_UAC=NO
VER | FINDSTR /IL "4." > NUL
IF %ERRORLEVEL% == 0 SET NewOSWith_UAC=NO
REM Test if Admin
CALL NET SESSION >nul 2>&1
IF NOT %ERRORLEVEL% == 0 (
if /i "%NewOSWith_UAC%"=="YES" (
rem Start batch again with UAC
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
)
rem Program will now start again automatically with admin rights!
rem pause
goto :eof
)
Das Snippet vereint einige gute Batch-Muster, insbesondere (1) den Admin-Test in diesem Thread von Ben Hooper und (2) die UAC-Aktivierung, die auf BatchGotAdmin gelesen und auf der Batch-Seite von robvanderwoude zitiert wurde (Respekt). (3) Für die OS-Identifikation durch "VER | FINDSTR-Muster" finde ich einfach keine Referenz).
(In Bezug auf einige sehr kleine Einschränkungen, wenn "NET SESSION" nicht funktioniert, wie in einer anderen Antwort erwähnt - fühlen Sie sich frei, einen anderen dieser Befehle einzufügen. Für mich sind das Ausführen im abgesicherten Modus von Windows oder das Herunterfahren spezieller Standarddienste und dergleichen keine wichtigen Anwendungsfälle - für einige Administratoren vielleicht schon).