У меня есть первый файл bat, которому нужны права администратора, поэтому пользователь будет запускать его «Как администратор», тогда мой второй файл bat не должен иметь прав администратора (необходимо перетащить & drop from Explorer).Не удается сбросить повышенные права в файле bat
Я попытался открыть второй файл летучей мыши из первого со следующими командами, но я не могу перетащить & во второй, если первый из них начался как администратор.
runas /trustlevel:0x20000 "cmd /C %~dp0upload.bat"
и
%~dp0upload.bat
Как я могу это сделать?
UPDATE: полный код
@echo off &setlocal
if not exist "MyFolder" GOTO :prog
runas /trustlevel:0x20000 "cmd /C %~dp0upload.bat"
exit /B
:prog
more code.....
exit
UPDATE 2: другие попытки
Использование
runas /trustlevel:0x20000 "call %~dp0upload.bat"
выдает ошибку, как упоминалось here
UPDATE 3: с помощью VBS
Ok, мне удалось открыть первую партию в качестве обычного пользователя, а оттуда я вызываю другую летучую мышь с повышенными правами с помощью:
setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
ECHO UAC.ShellExecute "temp.bat", "ELEV & !given_name!", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
"%temp%\OEgetPrivileges.vbs"
Теперь мне нужно передать !given_name!
в второй файл bat, но я не уверен, как его передать и как получить его в этой второй битой.
Проблема заключается в том, что пользователи не могут иметь пароль администратора и пользователей различаются все время. Поэтому им нужно «запустить как администратор» первую партию, которая не требует пароля. Я, наконец, отсоединил оба файла, поэтому мои пользователи будут запускать первую летучую мышь только один раз (запускать как admin), а в любое другое время запускать только вторую летучую мышь (без запуска в качестве администратора) – remyremy
@remyremy В скрипте возвышения также не нужен пароль администратора (для «обычного» пользователя), только щелчок в окне сообщения uac – jeb
Спасибо, сработало! Теперь мне нужно передать '! Given_name!' Во второй bat-файл, но я не уверен, как его передать и как получить его в этой второй битке.Я обновил свой вопрос – remyremy