![]() |
Admin Manifest als Einzeldatei
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:
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.
<?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> 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? |
AW: Admin Manifest als Einzeldatei
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.
|
AW: Admin Manifest als Einzeldatei
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.
|
AW: Admin Manifest als Einzeldatei
Zitat:
|
AW: Admin Manifest als Einzeldatei
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.
|
AW: Admin Manifest als Einzeldatei
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. ![]() |
AW: Admin Manifest als Einzeldatei
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.
|
AW: Admin Manifest als Einzeldatei
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. |
AW: Admin Manifest als Einzeldatei
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 ![]() Wenn nur ein Programmteil Adminrechte benoetigt, so sollte man diesen Teil z.B. in ein eigenes Programm auslagern und es bei Bedarf starten. |
AW: Admin Manifest als Einzeldatei
Danke für den Link! Sehr interessant.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz