Sto compilando una domanda con i586-mingw32msvc sotto ubuntu.Incorpora file manifest per richiedere il livello di esecuzione dell'amministratore con mingw32
Ho difficoltà a capire come incorporare un file manifest per richiedere il livello di esecuzione dell'amministratore con mingw32.
Per il mio esempio ho usato questo hello.c
:
int main() {
return 0;
}
questo file di risorse hello.rc
:
1 Manifest "hello.exe.manifest"
questo file manifesto 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>
compilo il mio file di risorse con:
i586-mingw32msvc-windres hello.rc hello.o
posso compilare la mia domanda finale con:
i586-mingw32msvc-gcc -O3 -Os -s -o hello.exe hello.c hello.o
SigCheck non mostra il file manifesto in esecuzione sigcheck -m hello.exe
.
Ora quando eseguo la mia applicazione in Windows non attiva il controllo dell'account utente (= non viene eseguito come amministratore) mentre quando allego il file hello.exe.manifest
nella stessa cartella attiva il controllo dell'account utente (come previsto).
Cosa mi sono perso?
Edit1: Giocando con Resource Hacker Ho aperto un file Setup.exe
ho creato con NSIS, l'unica differenza è che sensibile Manifest
è scritto nel mio MANIFEST
hello.exe
e Manifest
in Setup.exe
anche se in hello.rc
è scritto manifesto. O_o
EDIT2: ho cambiato il gruppo Manifest
manualmente con Resource Hacker:
Ora hello.exe
agisce normalmente innescando l'avviso UAC e l'esecuzione come amministratore. Sembra un "bug" con i586-mingw32msvc-windres
. :-)
Questo può aiutare: http://www.transmissionzero.co.uk/computing/win32-apps-with-mingw/ –
@JonathonReinhart Grazie ma ho provato ciò che è descritto anche su quel collegamento .. e [il linkalo collegato a] (https://msdn.microsoft.com/en-us/library/bb756973.aspx) troppo .. Ma non è cambiato nulla .. Ho aggiornato il mio file 'hello.rc' a' 1 Manifest " hello.exe.manifest "' .. Con Resource Hacker ho aperto un programma di installazione NSIS (che ho compilato con makensis) che richiede l'amministratore, tutto è sensibilmente lo stesso; l'unica cosa che è diversa è che il campo manifest è scritto "Manifest" nel file 'Setup.exe' e scritto" MANIFEST "nel mio file' hello.exe'! ([Vedi qui] (http://i.imgur.com/WzHtXnw.png)) –
Normalmente si compila il file .rc nel file '.res' (non' .o') –