Вставить файл манифеста, чтобы требовать уровня выполнения администратора с Mingw32
Я кросс-компиляции приложения с i586-mingw32msvc под Ubuntu.
У меня возникают трудности с пониманием того, как встроить файл манифеста, чтобы требовать уровня выполнения администратора с mingw32.
Для моего примера я использовал этоhello.c
:
int main() {
return 0;
}
этот файл ресурсаhello.rc
:
1 Manifest "hello.exe.manifest"
этот файл манифестаhello.exe.manifest
:
<?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="hello" type="win32"/>
<description>Hello World</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Я компилирую свой файл ресурсов с:
i586-mingw32msvc-windres hello.rc hello.o
Я собираю свое окончательное заявление с:
i586-mingw32msvc-gcc -O3 -Os -s -o hello.exe hello.c hello.o
SigCheck не показывает запущенный файл манифестаsigcheck -m hello.exe
.
Теперь, когда я запускаю свое приложение под Windows, оно не вызывает UAC (= не запускается как администратор), когда я присоединяюhello.exe.manifest
файл в той же папке, он вызывает UAC (как и ожидалось).
Что я упустил?
EDIT1: Играть сХакер ресурсов Я открылSetup.exe
файл, который я создал с помощью NSIS, единственное разумное отличие состоит в том, чтоManifest
написаноMANIFEST
в моемhello.exe
а такжеManifest
вSetup.exe
хотя вhello.rc
написано Манифест. O_o
EDIT2: Я изменилManifest
сгруппировать вручную с помощью Resource Hacker:
Сейчасhello.exe
работает нормально, вызывая предупреждение UAC и работая от имени администратора. Похоже, "ошибка" сi586-mingw32msvc-windres
, :-)