Beim Batchaufruf durch UAC.ShellExecute nur kurze Dateinamen beim aktuellen Verzeichnis
Hallo,
meine Batch muß Adminrechte haben und ich benötige den gesamten Pfad in dem die Batch ausgeführt wird.
Die erste Ausgabe des Pfades ist beim ersten Aufruf richtig:1 C:\Langerpfadname
Nach dem Aufruf durch UAC.ShellExecute wird nur ein kurzer Dateiname ausgegeben.
1C:\LANGER~1\
2C:\LANGER~1\
Wodurch wird der Fehler verursacht und wie kann ich ihn ggf. umgehen indem die beim Erstaufruf gespeicherte Variable erhalten bleibt?
Dann habe ich noch eine Verständnisfrage: Das Beispiel stammt glaube ich aus diesem Forum, die Pfade werden mit vier \ angegeben, z.B. "%temp%\\\\müll.vbs". Ich kann in der Funktion aber keinen Unterschied feststellen. Wozu wird das gemacht?
meine Batch muß Adminrechte haben und ich benötige den gesamten Pfad in dem die Batch ausgeführt wird.
Die erste Ausgabe des Pfades ist beim ersten Aufruf richtig:1 C:\Langerpfadname
Nach dem Aufruf durch UAC.ShellExecute wird nur ein kurzer Dateiname ausgegeben.
1C:\LANGER~1\
2C:\LANGER~1\
Wodurch wird der Fehler verursacht und wie kann ich ihn ggf. umgehen indem die beim Erstaufruf gespeicherte Variable erhalten bleibt?
Dann habe ich noch eine Verständnisfrage: Das Beispiel stammt glaube ich aus diesem Forum, die Pfade werden mit vier \ angegeben, z.B. "%temp%\\\\müll.vbs". Ich kann in der Funktion aber keinen Unterschied feststellen. Wozu wird das gemacht?
@echo off
cls
SETLOCAL ENABLEDELAYEDEXPANSION
SET Aufrufdateipfad=%~d0%~p0
echo 1!Aufrufdateipfad!
pause
REM Adminrechte prüfen
>NUL 2>&1 "%Systemroot%\system32\cacls.exe" "%Systemroot%\system32\config\system"
IF ERRORLEVEL 1 (
ECHO SET UAC = CreateObject^("Shell.Application"^) > "%temp%\müll.vbs"
SET PARAMS = %*:"=""
ECHO UAC.ShellExecute "%~s0", "%params%", "!Aufrufdateipfad!", "runas", 3 >> "%temp%\müll.vbs"
"%temp%\müll.vbs"
IF EXIST "%temp%\müll.vbs" DEL "%temp%\müll.vbs"
ECHO Dieses Programm benötigt Administratorrechte. Fragen Sie bitte Ihren Administrator ob Sie dieses Programm ausführen dürfen.
EXIT
)
echo 2!Aufrufdateipfad!
pause
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 357709
Url: https://administrator.de/forum/beim-batchaufruf-durch-uac-shellexecute-nur-kurze-dateinamen-beim-aktuellen-verzeichnis-357709.html
Ausgedruckt am: 16.04.2025 um 05:04 Uhr
1 Kommentar