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?