Я хочу получить простой надежный метод автоматического повышения уровня запущенного пакета без использования дополнительных файлов VBS или ярлыков с повышенными правами, предложенных в других потоках. Вызов диалога UAC из пакета через javascript обеспечивает короткий простой код.
Приведенный ниже сценарий автоматически повышает права пользователя до прав администратора, когда в диалоговом окне выбрано значение «Да», но появляется всплывающее диалоговое окно с ошибкой (за пределами окна Cmd) «Windows не может найти 'test.bat'». Может ли это быть из-за того, что путь к файлу содержит пробелы? Как исправить код или подавить это всплывающее окно с ошибкой?
@echo off
:: test admin rights
>nul 2>&1 net file
echo '%errorlevel%'
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute("%~nx0", '', '', 'runas', 1);close();"
:: test admin rights
>nul 2>&1 net file
echo '%errorlevel%'
if !errorlevel! equ 0 echo Hello >%temp%\tst.txt
exit /b