YuS_2
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Darth_Max Цитата: Как вызвать запрос UAC на права админа из bat-файла? | В общем случае, проверка как запущен сценарий, выглядит примерно так: Код: @echo off echo Administrative permissions required. Detecting permissions... >nul 2>&1 net session&&echo Success: Administrative permissions confirmed.||echo Failure: Current permissions inadequate. pause | если же требуется самозапуск от имени админа плюс с возможностью использования аргументов, то примерно так: Код: @echo off rem Пакетник с элевацией прав и возможностью ввода параметров для основной программы rem Тестовый запуск: < run.bat > или < %full_path%\run.bat 1 "2 3" "3" 4 5.1 > setlocal >nul 2>&1 net session&&goto run if /i "%~1"=="yes" goto run if /i "%~1"=="" set "args=noparam" set "file=%~f0" set "args=%* %args%" set file=""%file:"=%"" set args=%args:"=""% >"%temp%\uac.vbs" echo set objShell=CreateObject^("Shell.Application"^) >> "%temp%\uac.vbs" echo objShell.ShellExecute "cmd", "/c ""%file% ""yes"" %args%""", , "runas", 1 cscript /nologo /e:vbscript "%temp%\uac.vbs" exit /b :run >nul 2>&1 del "%temp%\uac.vbs" cd /d "%~dp0" title %cd% shift if "%~1"=="noparam" shift rem Тестовый блок проверки параметров [в боевых условиях блок можно уничтожить] echo.param_full=[%*] - [test_param %%*] echo.param_1=[%1] - [test_param %%1] echo.param_2=[%2] - [test_param %%2] echo.param_3=[%3] - [test_param %%3] echo.param_4=[%4] - [test_param %%4] echo.param_5=[%5] - [test_param %%5] rem ... и т.д. rem Конец тестового блока rem Место для основной программы. Текущий каталог = каталог запуска сценария. echo Successfull! UAC unlock. Demo - this line remove... pause | Цитата: Как выглядит файл-аналог bat-файла для Windows PowerShell? | Что значит как выглядит? Вообще, по умолчанию, сценарии powershell не запускаются как батники... но гибрид, вполне себе, может быть аналогом. Вот так может выглядеть скрипт, с проверкой UAC: Код: $iselevated=$false foreach ($sid in [security.principal.windowsidentity]::getcurrent().groups){ if ($sid.translate([security.principal.securityidentifier]).iswellknown( [security.principal.wellknownsidtype]::builtinadministratorssid )){$iselevated=$true} } if ($iselevated){'Success: Administrative permissions confirmed.'} else { 'Failure: Current permissions inadequate.' } | а так, с запросом элевации прав, если их нет: Код: $iselevated=$false foreach ($sid in [security.principal.windowsidentity]::getcurrent().groups){ if ($sid.translate([security.principal.securityidentifier]).iswellknown( [security.principal.wellknownsidtype]::builtinadministratorssid )){$iselevated=$true} } if (!$iselevated){ saps 'powershell.exe' -arg {-noexit -c write-host Success: Administrative permissions confirmed. } -verb runas -wait } else { 'Success: Administrative permissions confirmed.' } | |