Решение не было очевидным для меня, однако оно оказалось намного проще, чем я ожидал.
Будучи движимый этим намеком, я понял, что текущий контекст (рабочий каталог Вызывающий пакетного файла) должны были быть захвачены и передаются в файл VBScript.
Я изменил свой amr.bat
сценарий следующим образом.
@echo off :: Let me capture the current working directory set InvokerCapturedWorkingDirectory=%cd% :: BatchGotAdmin ::------------------------------------- REM --> Check for permissions >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" REM --> If error flag set, we do not have admin. if '%errorlevel%' NEQ '0' ( echo Requesting administrative privileges... goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" set params = %*:"=" echo UAC.ShellExecute "%comspec%", "/k C:\cmder\vendor\init.bat %params% & cd /d %InvokerCapturedWorkingDirectory%", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" exit /B :gotAdmin pushd "%CD%" CD /D "%~dp0" ::::::::::::::::::::::::::::::: :: START OF USER CUSTOM CODE :: ::::::::::::::::::::::::::::::: :: IS NOT NEEDED ANYMORE ::%comspec% /k "C:\cmder\vendor\init.bat %*" EXIT /B %ERRORLEVEL%
Позвольте мне подтвердить мои слова:
Если Вам интересно, о содержании в генерируемой VBScript файла ( который запускает пакетный файл в режиме повышенной ), здесь вы: