Как исправить неправильный сценарий повышения uppon нотации% cd% через VBS - PullRequest
0 голосов
/ 31 января 2019

Я хочу запустить скрипт

Если это так, он добавляет местоположение скрипта в переменную окружения %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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...