UAC Trustinfo Manifest in ein VC-2005 SP1 Projekt einfügen

An sich ist die Sache ganz einfach. Man erzeugt eine Manifest-Datei z.B. mit dem Namen Trustinfo.manifest, die nur den entsprechenden <trustinfo> Block enthält (und nicht mehr). Um die anderen Manifest Daten für CRT und COMCTL32 v6.0 kümmert man sich erstmal nicht, das soll ja MT.EXE und der Linker machen. Diese Datei fügt man in das Projekt ein. VS erkennt die Endung und der Manifest-Compiler soll diese Datei nun mit den anderen Manifest Daten mischen und das finale Manifest erzeugen.
Man wirft den Compiler an und… 🙄 … erhält die Fehlermeldung:
.\TrustInfo.manifest : manifest authoring warning 81010002: Unrecognized Element „requestedPrivileges“ in namespace „urn:schemas-microsoft-com:asm.v3“.

Entsprechende Recherche ergab, dass nur die MT.EXE aus dem Vista SDK dieses Manifest korrekt einmischt. Die funktionierende MT.EXE hat es nicht in das 2005 SP1 gepackt 🙁 .

OK also Vista SDK herunterladen installieren. MT.EXE ansehen und… 🙄
Die MT.EXE aus 2005 SP1 ist vom 2006-12-02 07:17,
die MT.EXE aus dem Vista SDK ist vom 2006-10-19 14:52,
beide haben eine Größe von 727.552 Bytes und haben die gleiche Versionsnummer 5.2.3790.2075. Es ist nicht zu fassen.

OK packen wir also trotzdem die MT.EXE aus dem Vista SDK in das Verzeichnis C:\Program Files\Microsoft Visual Studio 8\VC\bin

Nun kompilieren wir das Projekt noch einmal und nun… :mrgreen:
wunderbar, das Projekt kompiliert wie erwartet. Das Manifest wird eingefügt. Die erzeugte EXE hat alle entsprechenden Manifeste eingebettet.

Wen es interessiert, die Bug-Meldung bzgl. der Versionsnummer ist hier zu finden:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=258108

Es sei noch angemerkt: Mein Testrechner ist ein Vista-Ultimate Laptop. Installiert war auch das VS-2005 SP1 Beta für Vista. Auch diese Version enthält keine kompatible MT.EXE!
Danke Jochen für den Hinweis!

4 Gedanken zu „UAC Trustinfo Manifest in ein VC-2005 SP1 Projekt einfügen“

  1. Hallo,

    danke für den Artikel.
    Ich habe noch eine Ergänzung. Ich hatte das exakt selbe Problem, habe aber die exe nach der Fehlermeldung gecheckt: Ergebnis, trotz warning wurde das Manifest embedded und die exe funkt wie gewünscht auf Windows7 (es gibt ne messageBox und in die ini kann geschrieben werden). Geht also auch mit der alten Version von mt.exe!

    1. Ich weiß nicht genau was Du meinst!
      Wnen die EXE ein asInvoker Manifest hat, dann kann in eine INI Datei nur in Bereichen geschrieben in denen auch Rechte existieren. Aber niemals unter C:\Program Files…

  2. In meinem Kommentar ging es mir darum, dass auch die mt.exe, die mit VS 2005 kommt, das Manifest korrekt einbettet. mt.exe gibt zwar die in deinem Artikel beschriebene Warning aus, macht aber, was sie soll (falls die IDE überhaupt mt.exe benutzt, wovon ich jetzt ausgehe).

    Meine Erklärung dazu bezog sich auf unser konkretes Problem mit den Rechten zum Ändern einer ini und hat erstmal nichts damit zu tun. Ich habe es etwas missverständlich ausgedrückt.

    By the way:
    Da dieses Verfahren versagt, wenn der User keine Admin-Rechte hat (auf Win7 wird er beim starten unserer exe aufgefordert, sich als Admin anzumelden, bei XP gibts glaub ich nichtmal eine Nachfrage und die ini kann nicht geändert werden), hab ich den ganzen Manifest-Kladderadatsch rausgeschmissen und wir verschieben die ini in einen nicht geschützten Bereich ;-).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.