Права администратора в Qt

138
04 декабря 2019, 20:00

Есть приложение на Qt, и обычно располагается в Program Files. В некоторых случаях, когда запускается программа, она запрашивает/не запрашивает права администратора. Что нужно дописать, чтобы запускался всегда с правами админа.

Answer 1

Чтобы программа запрашивала права администратора в Windows, нужно внедрить в неё файл манифеста. Файл внедряется в готовый исполняемый файл программой mt. Обычно она устанавливается вместе с Visual Studio. Если вы не используете Visual Studio, то вам придётся установить эту программу отдельно, читайте соответствующую документацию. Файл манифеста может выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="applicationname" type="win32"></assemblyIdentity>
    <description>Description of application</description>
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
       <requestedPrivileges>
          <requestedExecutionLevel level="requireAdministrator">
          </requestedExecutionLevel>
       </requestedPrivileges>
    </security>
    </trustInfo>
</assembly>

Сохраните этот файл под именем manifest.xml рядом с вашим исполняемым файлом. После этого запустите в командной строке:

mt -manifest manifest.xml -outputresource:your_program.exe

Чтобы манифест автоматически внедрялся в файл при сборке проекта в Qt Creator, нужно добавить в pro-файл сценарий пост-линковки:

win32 {
   QMAKE_POST_LINK += mt -manifest $$PWD/manifest.xml -outputresource:$$OUT_PWD/$$TARGET".exe" $$escape_expand(\n\t)
}
READ ALSO
Как добавить текст в TextView через Loader?

Как добавить текст в TextView через Loader?

Сейчас изучаю потоки в андроид, и мое задание - сделать счетчик, который добавляет числа от 0 до 9 в TextView через LoaderПонятно, что Loader нужен для...

234
Нужна помощь с заданием [закрыт]

Нужна помощь с заданием [закрыт]

В логе службы есть N записей, в которых указано, что в i-й момент времени Васина программа потребляла Ai мегабайт памятиЕсли в какой-то момент...

135
Если в классе создаю конструктор - не могу наследовать класс, что можно сделать?

Если в классе создаю конструктор - не могу наследовать класс, что можно сделать?

Error: java: constructor Salad in class Salad cannot be applied to given types; required: int found: no arguments reason: actual and formal argument lists differ in length

110
BigDecimal автодобавление 0

BigDecimal автодобавление 0

Хочу получить на выходе (1) без скобок

129