Запуск exe через sudo в bat

  • Автор темы Автор темы monowar
  • Дата начала Дата начала

Переводчик Google

Bash:
:getPrivileges
if exist %windir%\System32\sudo.exe sudo "%~f0" else (
runadmin.vbs "%~f0"
::goto:eof pseudo UAC console
exit /b
)

Оказывается в win11 24H2 sudo встроен в режиме разработчика, типа как в андроиде. Удобно вообще :Bb::Beach:
1732055432333.webp
1732055548125.webp
 
Да ,а в Windoцs 10 добавляешь в System 32
Phoenix это bash ,а как перевести его в bat ?
Где bash ? Он от batch не сильно отличается, в основном названием команд. А так логика по моему одинаковая.
Я столкнулся с проблемой прав, то есть если файл скрипта вызывает программу с правами выше, то та затребует права или не запустится, вызовет ошибку.
Например установщик в манифесте имеет asinvoker, а abr.exe highestAvailable - и даже при проверке прав администратора (поднятие прав через вызов uac) открывается второе окно. Короче понизил права abr, тогда она унаследовала права основного кода requireAdministrator и всё ок.
Возможно у тебя именно с разным уровнем прав проблема и прога не запускается или ошибку выдает.
1733127763695.webp

а если отключить обработку ошибок, то просто не запустится молча. Но через контекст Запуск от админа работать будет.
Чтобы этого избежать пришлось вручную править манифест готового установщика.
 
Последнее редактирование:
Я столкнулся с проблемой прав, то есть если файл скрипта вызывает программу с правами выше, то та затребует права или не запустится, вызовет ошибку.
Например установщик в манифесте имеет asinvoker, а abr.exe highestAvailable - и даже при проверке прав администратора (поднятие прав через вызов uac) открывается второе окно. Короче понизил права abr, тогда она унаследовала права основного кода requireAdministrator и всё ок.
Возможно у тебя именно с разным уровнем прав проблема и прога не запускается или ошибку выдает.
Это не правильно так делать, если установщик не умеет затребовать повышения прав для его дочерних процессов, то необходимо изначально в манифест установщика выставить требование прав не ниже тех, что требуются для нормального запуска дочерних процессов, обычно requireAdministrator.

Часто в установщиках прописывают asInvoker, когда в нем есть опция выбора, кому инсталлировать программу - текущему юзеру (в папку %LOCALAPPDATA%, имеющую DACL без требования прав админа для записи) или для всех (в Program Files, например).
 
Последнее редактирование:
Это не правильно так делать, если установщик не умеет затребовать повышения прав для его дочерних процессов, то необходимо изначально в манифест установщика выставить требование прав не ниже тех, что требуются для нормального запуска дочерних процессов, обычно requireAdministrator.

Часто в установщиках прописывают asInvoker, когда в нем есть опция выбора, кому инсталлировать программу - текущему юзеру (в папку %LOCALAPPDATA%, имеющую DACL без требования прав админа для записи) или для всех (в Program Files, например).
Да, потом разобрался, есть там параметр - вот как понимать ? Но в общем работают они вместе :Dash1:
Секции [Run] и [UninstallRun] runascurrentuser
При указании этого флага порождённый процесс унаследует учётные полномочия пользователя, который запустил программу установки/удаления (как правило, полные права администратора).
Такое поведение принимается по умолчанию, если флаг postinstall не используется.
 
Назад
Сверху Снизу