So checken Sie eine Batchdatei ein, wenn Sie sie mit erhöhten Rechten ausführen
Manchmal ist es sinnvoll, eine Batchdatei einzuchecken, wenn sie über eine Eingabeaufforderung mit erhöhten Rechten oder als Administrator gestartet wurde. Ich möchte mit Ihnen einen Trick teilen, den ich dazu verwende. Die Grundidee meines Tricks basiert auf dem Wert der speziellen Umgebungsvariablen %errorlevel%, die den Exit-Code für die meisten Konsolen-Apps und -Befehle speichert. Sehen wir uns das in Aktion an.
Werbung
Wenn eine Konsolen-App ihre Arbeit ordnungsgemäß beendet, speichert die Variable %errorlevel% 0 als ihren Wert.
Öffnen Sie eine neue Eingabeaufforderungsinstanz und führen Sie den Befehl "dir" aus. Drucken Sie danach den Wert %errorlevel% mit dem Befehl "echo":
dir. echo %errorlevel%
Als Ausgabe wird 0 ausgegeben.
Versuchen wir nun, einen Befehl auszuführen, der eine Erhöhung erfordert, von einem normalen Eingabeaufforderungsfenster ohne Erhöhung. Versuchen wir es zum Beispiel mit dem
Wenn Sie den Wert %errorlevel% ausgeben, ist er nicht 0, da der Befehl openfiles keine geöffneten Dateien ohne Administratorrechte anzeigt.
![openfiles errorlevel 1](/f/5d00129a537d4a144a8277203d356038.png)
Wenn Sie es jedoch über eine Eingabeaufforderung mit erhöhten Rechten ausführen (So öffnen Sie eine Admin-cmd-Eingabeaufforderung), zeigt es Ihnen geöffnete Dateien an und gibt erwartungsgemäß 0 zurück.
![Openfiles Fehlerlevel 0](/f/43cc86dd6c3b4f5cf59e7a66c7a04303.png)
Mit dieser Funktion ist es möglich, eine einfache Prüfung in der Batch-Datei zu implementieren:
@echo aus. openfiles > NUL 2>&1 if NOT %ERRORLEVEL% EQU 0 goto NotAdmin echo Hallo von der Eingabeaufforderung mit erhöhten Rechten goto End :NotAdmin echo Diese Eingabeaufforderung ist NICHT ERHÖHT :End.
Beachten Sie, dass ich die Ausgabeumleitung verwende, um jede Ausgabe des Befehls openfiles zu unterdrücken. Im "> NUL 2>&1 Teil" wird die Standardausgabe des Befehls nach nirgendwo (NUL) umgeleitet und die Fehlerausgabe wird auf die Standardausgabe umgeleitet, also auch auf NUL.
Anstelle des Befehls openfiles können Sie jeden Befehl verwenden, der eine Erhöhung erfordert, z net-Sitzung Befehl.
Das ist es.