UAC per Manifest?



  • Hallo

    Ich möchte, das beim Start eines Programmes der UAC-Dialog erscheint, damit das Programm
    im Anschluss mit Administrator-Rechten läuft. Dies aber ohne das der User das per Eigenschaften
    oder Registry oder Rechtsklick ("Als Administrator ausführen") selbst erledigen muss.

    Arbeite ich mit VisualStudioExpress ist das kein Problem. Dort gibt es per IDE eine
    Linkeroption.

    Aber arbeite ich mit Openwatcom oder codeblocks kann ich die Manifestdatei in das exefile
    zwar einbinden lassen, aber es wird beim Programmstart kein UAC ausgelöst.

    Hat jemand einen Tip, wie man das auch mit anderen Linkern (IDEs) als VSE hinbekommt ?

    Oder habe ich das grundsätzlich falsch verstanden, dass das gewünschte Verhalten per manifest
    erzielt werden kann?


  • Mod

    Manifest manuell erzeugen und in der RC Datei manuell einfügen.



  • Problem ist sozusagen gelöst.

    Aus irgendeinem Grund wird hier RT_MANIFEST
    nicht richtig aufgelöst. Ich muss im rc-file
    dann so einbinden:

    1 24 xy.manifest

    Seltsamerweise erhalte ich aber keine Fehler-
    meldung bei Einsatz von RT_MANIFEST. Demnach
    kennt der Compiler die Konstante also ...


  • Mod

    RT_MANIFEST ist 24. Du kannst fast jede Zahl verwenden. Letzten Endes sind Ressourcen nur binäre Streams in bestimmten Formaten der EXE.



  • Martin Richter schrieb:

    RT_MANIFEST ist 24. Du kannst fast jede Zahl verwenden. Letzten Endes sind Ressourcen nur binäre Streams in bestimmten Formaten der EXE.

    Ich habe hier unter OpenWatcom nur mit diesem Schema Erfolg ( 1 und 24 ):

    1 24 xyz.manifest

    Bei anderen Werten erhalte ich keinen UAC-Dialog.

    Ich habe keine Ahnung, warum das so ist.


  • Mod

    Typ ist 24, ID ist 1 für EXE und 24 für DLLs (Side by Side).
    Das steht doch alles in der MSDN...

    Entsprechend sucht Windows auch nur nach diesen IDs.



  • Alberecht siehe hier:
    https://msdn.microsoft.com/en-us/library/bb384691.aspx

    [/code]
    <requestedPrivileges>
    <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
    </requestedPrivileges>
    [code="xml"]



  • Hm, habe ich mich so schlecht ausgedrückt ? 😉

    Es funktioniert ja (mittlerweile). Warum es anfangs nicht ging, lag daran,
    das ich RT_MANIFEST anstatt dessen Wert 24 verwendet hatte. So, wie es
    eigentlich sein soll. Aber, obwohl RT_MANIFEST im OpenWatcom korrekt
    initialisiert ist, kann ich es nicht einsetzen.

    1 24 xy.manifest geht

    1 RT_MANIFEST xy.manifest geht nicht ...

    Seltsam zwar, aber jetzt wo ich es weiss, ist das Problem
    im Grunde gelöst.



  • Martin Richter schrieb:

    ID ist 1 für EXE und 24 für DLLs (Side by Side).

    Danke. Diese Zuordnungen kannte ich nicht.



  • Mr C schrieb:

    Alberecht siehe hier:
    https://msdn.microsoft.com/en-us/library/bb384691.aspx

    Ich hab mal versucht, diese Seite selbst zu finden, indem ich in der MSDN nach Manifest, Linking etc. gesucht habe. Es ist mir nicht gelungen. Wie geht man sinnvollerweise vor, um so detaillierte Informationen in der MSDN zu lokalisieren?



  • Belli direkt in MSDN habe ich noch nie gesucht, ich bekomme Ergebnisse in google.


Log in to reply