HOWTO · Batch
Batchdatei als Administrator ausführen
In dieser Anleitung erfahren Sie, wie Sie eine Batchdatei einmalig mit Administratorrechten starten oder für die wiederholte Verwendung eine Verknüpfung einrichten.
Auf dieser Seite
Um eine Batchdatei einmalig mit Administratorrechten auszuführen, klicken Sie mit der rechten Maustaste darauf, wählen Sie Als Administrator ausführen und bestätigen Sie anschließend die Eingabeaufforderung der Benutzerkontensteuerung (UAC). Für die wiederholte manuelle Verwendung können Sie eine Verknüpfung erstellen und darin die Option Als Administrator ausführen aktivieren. Verwenden Sie Administratorrechte nur, wenn ein Befehl in der Datei sie benötigt. Prüfen Sie die Befehle, bevor Sie die Rechteerweiterung bestätigen, denn sie erhalten weitreichenden Zugriff auf das System. Das Konto, mit dem die UAC-Eingabeaufforderung bestätigt wird, muss die erforderlichen Rechte besitzen.
Batchdatei über eine Verknüpfung als Administrator ausführen
Erstellen Sie eine Verknüpfung, indem Sie mit der rechten Maustaste auf die Batchdatei klicken und Verknüpfung erstellen wählen. Klicken Sie anschließend mit der rechten Maustaste auf die Verknüpfung und öffnen Sie Eigenschaften. Wählen Sie auf der Registerkarte Verknüpfung die Option Erweitert. Aktivieren Sie Als Administrator ausführen, bestätigen Sie die Dialoge und starten Sie die Verknüpfung. Windows zeigt bei jedem Start eine UAC-Eingabeaufforderung an, über die Sie die Ausführung mit erhöhten Rechten bestätigen oder abbrechen können. Ist die Option nicht verfügbar oder weist Windows die Anforderung zurück, verwenden Sie ein Konto, das die Rechteerweiterung bestätigen darf, oder bitten Sie die Geräteverwaltung, den Zugriff einzurichten.
Eine Verknüpfung kann die Batchdatei mit einem anderen aktuellen Verzeichnis starten. Befehle mit relativen Dateipfaden suchen dann möglicherweise im falschen Ordner. Fügen Sie cd /d "%~dp0" am Anfang der Batchdatei ein, um das aktuelle Verzeichnis auf den Ordner des Skripts zu setzen. %~dp0 wird zum Laufwerk und Pfad des ausgeführten Batchskripts aufgelöst; /d ermöglicht cd, neben dem Verzeichnis auch das Laufwerk zu wechseln. Diese Zeile ändert das Arbeitsverzeichnis, gewährt aber keine Administratorrechte. Dafür ist die Einstellung der Verknüpfung zuständig.
Der folgende Python-Helfer schreibt eine kleine Batchdatei-Vorlage in einen temporären Ordner und gibt die gespeicherten Zeilen aus. So können Sie den Verzeichnisbefehl prüfen, bevor Sie ihn in Ihr eigenes Skript übernehmen. Die Beschriftungen im unveränderten Beispiel bleiben auf Englisch.
from pathlib import Path
from tempfile import TemporaryDirectory
with TemporaryDirectory() as folder:
batch_file = Path(folder) / "sample.bat"
batch_file.write_text(
'@echo off\ncd /d "%~dp0"\necho Ready\n',
encoding="utf-8",
)
print(batch_file.read_text(encoding="utf-8"), end="")
@echo off
cd /d "%~dp0"
echo Ready
Dieses Python-Beispiel erstellt die Datei und zeigt ihren Inhalt an; es führt keine Windows-Batchdatei aus und fordert keine Rechteerweiterung an. Speichern Sie die gezeigten Batchzeilen unter Windows in dem Skript, das Sie starten möchten. Der Verzeichnisbefehl sollte vor allen Befehlen stehen, die auf Dateien neben dem Skript zugreifen. Verwendet das Skript stattdessen absolute Pfade, ist sein Verhalten unabhängig vom aktuellen Verzeichnis.
Batchdatei über ihren Code als Administrator ausführen
Der Befehl runas startet ein Programm mit den Anmeldedaten eines anderen Benutzerkontos. Er ist keine allgemeine Möglichkeit, für das aktuelle Konto eine UAC-Rechteerweiterung anzufordern. Zum Beispiel fordert runas /user:DOMAIN\\Administrator "cmd.exe /c C:\\Scripts\\task.bat" die Anmeldedaten des angegebenen Kontos an. Ersetzen Sie Konto- und Skriptpfad durch auf Ihrem Computer gültige Werte. Das Konto muss über die erforderlichen Rechte verfügen; runas kann nach seinem Kennwort fragen. Mit /savecred lassen sich Anmeldedaten für spätere Verwendungen speichern. Auf einem gemeinsam genutzten oder nicht vertrauenswürdigen Computer ist das mit einem Sicherheitsrisiko verbunden. Dieser Befehl startet das Programm unter einem anderen Konto. Möchten Sie die Rechte für Ihr aktuelles Konto erweitern, verwenden Sie stattdessen das Kontextmenü oder die entsprechende Verknüpfungseinstellung.
Eine Batchdatei kann auch einen separaten Helfer starten, der über Windows eine Rechteerweiterung anfordert. Ein Skript zur eigenen Rechteerweiterung muss jedoch Anführungszeichen, Argumente, das Arbeitsverzeichnis und die UAC-Anforderung sorgfältig behandeln. Dieser Artikel enthält keinen direkt verwendbaren VBS-Helfer, da diese Details hier nicht überprüft wurden. Für wiederholte manuelle Starts ist eine Verknüpfung einfacher. Ein Skript kann die UAC nicht unbemerkt umgehen: Windows verlangt eine Bestätigung oder einen bereits autorisierten Kontext mit erhöhten Rechten. Die Startschritte und das Verhalten des Kontos hängen von Windows ab und wurden in der bereitgestellten Laufzeitumgebung nicht ausgeführt.
Fazit
Für einen einmaligen Start mit erhöhten Rechten wählen Sie im Kontextmenü der Datei Als Administrator ausführen. Für die häufige manuelle Verwendung richten Sie eine Verknüpfung ein und verankern relative Pfade mit %~dp0 im Skriptordner. Prüfen Sie die Batchbefehle, bevor Sie die UAC-Eingabeaufforderung bestätigen. Verwenden Sie runas nur, wenn ein Befehl unter einem anderen Konto ausgeführt werden soll; es ersetzt nicht die UAC-Rechteerweiterung. Soll die Aufgabe ohne Bestätigung durch eine Person bei jedem Start ausgeführt werden, verwenden Sie einen von der Administration genehmigten Windows-Verwaltungsmechanismus, statt die Eingabeaufforderung zu verbergen oder zu umgehen.