AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Admin Manifest als Einzeldatei

Ein Thema von Shark99 · begonnen am 27. Nov 2015 · letzter Beitrag vom 28. Nov 2015
Antwort Antwort
Seite 1 von 2  1 2   
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

Admin Manifest als Einzeldatei

  Alt 27. Nov 2015, 20:52
Ich bin in ein Delphi 7 Program ein Manifest Resource ein damit die Anwendung mit Admin-Rechten startet. Es funktioniert einwandfrei. Den Code poste ich mal trotzdem (können andere Leute ja gebrauchen).
Delphi-Quellcode:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    version="1.1.1.1"
    processorArchitecture="X86"
    name="Company.Exename"
    type="Win32"/>
  <description>My App Description</description>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
            <!-- Windows 10 -->
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
            <!-- Windows 8.1 -->
            <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
            <!-- Windows Vista -->
            <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
            <!-- Windows 7 -->
            <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
            <!-- Windows 8 -->
            <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    </application>
  </compatibility>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
</assembly>
Ich kompiliere es zu einem .res file und binde in die MainForm ein. Nach dem starten des Programs kommt die UAC Nachfrage und ich hab Admin Rechte. So weit so gut.

Der Kunde will aber nun das man bei der Installation bestimmen soll ob das Programm Admin Rechte beim Starten bekommt oder nicht.

Ich dachte die einfachste Möglichkeit es zu implementieren wäre das Manifest Resource aus dem Exe rauszunehmen und es als einzelne Datei auszuliefern.

Hab also Admin.res entfernt, kompiliert, getestet, alles OK, es kommt keine UAC Abfrage mehr. Dann habe ich das XML (nicht das res) von oben genommen und als exename.exe.manifest in das gleiche Verzeichnis wie exename.exe gespeichert.

Ich habe nun erwartet dass beim Starten von exename wieder die UAC Abfrage kommt. Es tut sich jedoch nichts und das Programm bekommt keine Adminrechte. Was mache ich falsch?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.100 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Admin Manifest als Einzeldatei

  Alt 27. Nov 2015, 21:21
Wenn die Datei sowohl mit als auch ohne UAC-Abfrage funktionieren soll dann binde kein "level="requireAdministrator""-Manifest ein sondern "restarte" die Anwendung mit "runas"-parameter.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#3

AW: Admin Manifest als Einzeldatei

  Alt 27. Nov 2015, 21:35
Die Exe soll je nachdem auf welchen PC sie installiert wird mit Admin rechten starten oder nicht. Also PC A, beim Installieren Checkbox Admin-Rechte an, es wird exe + admin manifest installiert, PC B beim Installieren Checkbox Admin-Rechte aus, es wird nur exe installiert.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.100 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Admin Manifest als Einzeldatei

  Alt 27. Nov 2015, 21:44
Die Exe soll je nachdem auf welchen PC sie installiert wird mit Admin rechten starten oder nicht. Also PC A, beim Installieren Checkbox Admin-Rechte an, es wird exe + admin manifest installiert, PC B beim Installieren Checkbox Admin-Rechte aus, es wird nur exe installiert.
Es gibt doch in den Dateieigenschaften unter Windows die Checkbox "Mit Adminrechten starten". Diese Dateieigenschaft müsste der Installer setzen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#5

AW: Admin Manifest als Einzeldatei

  Alt 27. Nov 2015, 22:00
Das wäre eine Möglichkeit, alledings nicht perfekt falls jemand das Shortcut löscht. Ich würde trotzdem gerne wissen wieso es mit dem Manifest als Datei nicht funktioniert.
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#6

AW: Admin Manifest als Einzeldatei

  Alt 27. Nov 2015, 22:24
Also bei mir funktioniert das.
Hast du sichergestellt, dass die Exe kein internes Manifest mehr enthält? Das setzt sonst das externe außer Kraft.
Mehr Infos siehe hier.
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#7

AW: Admin Manifest als Einzeldatei

  Alt 27. Nov 2015, 22:31
Ja, ist ganz sicher so. Exe Größe ist kleiner geworden und es kommt keine UAC Abfrage mehr wie mit dem Manifest. Ich bin unter Win 10 x64.
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#8

AW: Admin Manifest als Einzeldatei

  Alt 28. Nov 2015, 00:30
Also an der Dateigröße würde ich das nicht festmachen. Am besten einen Ressourceneditor nehmen und nachschauen.
Wobei ich schon glaube, dass du recht hast.
Vielleichts liegt's an deinem XML? Ich habe die kurze Version von der Stackoverflow-Seite genommen, die ich verlinkt habe. Hat wie gesagt funktioniert, Win 8.1 x64.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.146 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Admin Manifest als Einzeldatei

  Alt 28. Nov 2015, 12:42
Externe Manifeste funktionieren nur dann zuverlaessig, wenn Windows das Programm nicht schon kennt. Ich habe auch eine Weile damit rumexperimentiert und es schliesslich aufgegeben.

Artikel dazu Find Out Why Your External Manifest is Being Ignored.

Wenn nur ein Programmteil Adminrechte benoetigt, so sollte man diesen Teil z.B. in ein eigenes Programm auslagern und es bei Bedarf starten.
Thomas Mueller
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#10

AW: Admin Manifest als Einzeldatei

  Alt 28. Nov 2015, 13:03
Danke für den Link! Sehr interessant.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf