Я хочу запустить скрипт
Если это так, он добавляет местоположение скрипта в переменную окружения %PATH%
.
Если это не так, он повышается, а затем запускаетсясам, чтобы сделать то, что описано выше.
Но независимо от того, что я делаю, я либо получаю пустое окно с повышенными правами, мой код выполняется без повышенных прав, мой код выполняется с повышенными правами, но в System32
Неправильно %cd%
.
Код справа (другая форма вставки на оранжевом маркере) запускается в правильном каталоге, он открывает приглашение UAC, и открывается терминал с повышенными правами (внизу) с неверным путем
https://i.imgur.com/vU0rAcN.png «Исходная проблема»
Мне кажется, проблема в оранжевом маркере на изображении 1, я попытался заменить его на %~dp0%0
, и это сработало! Но, только , если он запускается из терминала cmd, а не как проводник форм "двойного щелчка"
Примечание, я ожидал, что %~dp0
вернет полный путь к файлу, но этотолько вернул каталог.
https://i.imgur.com/z8VNawM.png «Моя попытка исправить это»
Мой код на pastebin
>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 "cmd.exe", "/c %~dp0%0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
echo %cd%
pause
Iудалил часть добавления к пути в попытке изолировать проблему и предотвратить себя и других от добавления нежелательной почты в путь:)
Я ожидал, что исходный путь будет передан в окно с повышенными правами.Через .vbs, но это не так.И когда он это сделал, он не мог от explorer.exe