Ich kompiliere eine Anwendung mit i586-mingw32msvc unter ubuntu.
Ich habe Schwierigkeiten zu verstehen, wie man eine Manifest-Datei einbettet, um Administrator-Ausführungslevel mit mingw32 zu erfordern.
Für mein Beispiel habe ich dieses hello.c
:
Diese Ressourcendatei hello.rc
:
Diese Manifestdatei hello.exe.manifest
:
Ich kompiliere meine Ressourcendatei mit:
%Vor%Ich kompiliere meine endgültige Bewerbung mit:
%Vor% SigCheck zeigt nicht die Manifestdatei an, die sigcheck -m hello.exe
ausführt.
Wenn ich jetzt meine Anwendung unter Windows ausführe, löst sie nicht die UAC aus (= läuft nicht als Administrator), während ich, wenn ich die Datei hello.exe.manifest
im selben Ordner angehängt habe, die UAC (wie erwartet) auslöst.
Was habe ich vermisst?
EDIT1: Mit Ressourcen-Hacker spielen Ich habe eine Setup.exe
-Datei geöffnet, die ich habe erstellt mit NSIS, ist der einzige sinnvolle Unterschied, dass Manifest
geschrieben wird MANIFEST
in meinem hello.exe
und Manifest
in Setup.exe
obwohl in hello.rc
geschrieben wird Manifest. O_o
EDIT2: Ich habe die Manifest
Gruppe manuell mit Resource Hacker geändert:
Jetzt wirkt hello.exe
normal, löst die UAC-Warnung aus und wird als Administrator ausgeführt. Scheint wie ein "Bug" mit i586-mingw32msvc-windres
. : -)
In Bezug auf die magischen Voodoo-Nummern 1 und 24:
%Vor%Diese Zeile übersetzt sich in etwa so:
%Vor%wobei diese Definitionen wie folgt definiert sind:
%Vor%Wie oben in den Conditional Wrappern gezeigt, ist RT_MANIFEST möglicherweise bereits definiert und wenn Sie eine Google-Suche nach diesem RT_MANIFEST Begriff durchführen, werden Sie viele Treffer mit mehr finden Details darüber, was vor sich geht.