Incrustar archivo de manifiesto para requerir el nivel de ejecución del administrador con mingw32
Estoy compilando una aplicación con i586-mingw32msvc en ubuntu.
Tengo dificultades para comprender cómo incrustar un archivo de manifiesto para requerir el nivel de ejecución del administrador con mingw32.
Para mi ejemplo usé estohello.c
:
int main() {
return 0;
}
este archivo de recursoshello.rc
:
1 Manifest "hello.exe.manifest"
este archivo de manifiestohello.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>
Compilo mi archivo de recursos con:
i586-mingw32msvc-windres hello.rc hello.o
Recopilo mi aplicación final con:
i586-mingw32msvc-gcc -O3 -Os -s -o hello.exe hello.c hello.o
SigCheck no muestra el archivo de manifiesto en ejecuciónsigcheck -m hello.exe
.
Ahora, cuando ejecuto mi aplicación en Windows, no activa el UAC (= no se ejecuta como administrador) mientras que adjunto elhello.exe.manifest
archivo en la misma carpeta que activa el UAC (como se esperaba).
¿Qué me perdí?
EDITAR1: Jugando conHacker de recursos He abierto unSetup.exe
archivo que he creado con NSIS, la única diferencia sensata es queManifest
está escritoMANIFEST
en mihello.exe
yManifest
enSetup.exe
aunque enhello.rc
Está escrito Manifiesto. O_o
EDIT2: He cambiado elManifest
agrupar manualmente con Resource Hacker:
Ahorahello.exe
está actuando normalmente disparando la alerta UAC y ejecutándose como administrador. Parece un "error" coni586-mingw32msvc-windres
. :-)