Einzelnen Beitrag anzeigen

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