Как добавить требуемые повышенные привилегии к существующему файлу EXE? (Или можно установить при запуске IExpress?)

У нас есть установщик для нашего приложения. (Программа на C ++, созданная в VisualStudio 2012.) Теперь установщик подписан и требует повышенных привилегий - пользователь получает аккуратный вопрос UAC.

Однако для некоторых клиентов установщику требуется много других файлов. Мы используем IExpress для создания самораспаковывающегося архива. Пользователь запускает самораспаковывающийся EXE-файл, файлы распаковываются и запускается наш установщик.

Но это не работает после того, как мы добавили поддержку UAC. EXE, созданный IExpress, не запускает программу, требующую повышенных привилегий.

Простым решением было бы то, что EXE, созданный IExpress, также требует повышенных привилегий. Но я не нашел флага IExpress, который бы это делал. (Или я что-то пропустил?)

Есть ли простой способ добавить «требовать повышенных привилегий» в существующий EXE-файл?


person UglySwede    schedule 28.05.2015    source источник


Ответы (2)


Кажется, довольно простой способ сделать это через cmd.exe. Просто измените свою программу установки, например:

setup.exe

to

cmd /c setup.exe

Тогда «волшебное обнаружение UAC» IExpress не произойдет, и пользователь получит стандартную подсказку UAC при запуске вашей программы.


Если вы хотите узнать больше…

Новые версии IExpress включают манифест, который намеренно не запрашивает повышение UAC для самого пакета, созданного IExpress. Вот как это выглядит в wextract.exe (часть, которая фактически входит в ваш сгенерированный пакет):

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  <security>
    <requestedPrivileges>
      <requestedExecutionLevel
        level="asInvoker"
        uiAccess="false"/>
    </requestedPrivileges>
  </security>
</trustInfo>

Согласно MSDN, уровень asInvoker означает: приложение будет работать с те же разрешения, что и у процесса, который его запустил.

Судя по всему, есть программы, которые могут модифицировать манифест постфактум. Один называется ResEdit, хотя я рекомендую вам загрузить его с SoftPedia, поскольку на сайте .net сейчас есть рекламное ПО. Мне не повезло с этим (я думаю, потому что у меня не была установлена ​​Visual Studio), но, возможно, это сработает для вас.

Если вы решили пойти по этому пути, попробуйте сменить level на requireAdministrator.

person fission    schedule 12.09.2015

вы можете попробовать это в команде после установки мастера iexpress: -

PowerShell -windowstyle hidden -command "Start-Process -Wait setup.exe -Verb Runas"

-windowstyle hidden скрывает окно PowerShell.

-Wait ожидает завершения setup.exe перед удалением временных файлов (где файлы Aliexpress извлекаются по умолчанию)

-Глагол Runas Просьбы о возвышении.

person adithya M    schedule 29.08.2020