2013-05-06 10 views
5

Mein Programm sollte als Administrator ausgeführt werden. Vor zwei Jahren habe ich eine Manifest-Datei erstellt, die funktioniert. Aber jetzt übertrage ich von Delphi 2010 auf Delphi XE3 und es funktioniert nicht - Programmstart wie gewohnt (nicht als Administrator). Weiter werde ich mein Programm als "MyApp" bezeichnen.Manifest-Datei nicht abfangen

In Quelle erkläre ich zwei res-Dateien:

{$R MyApp.res} 
{$R Manifest.res} 

Manifest war schaffen durch diesen Code:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity 
    type="win32" 
    name="MyApp" 
    version="1.1.0.0" 
    processorArchitecture="x86"/> 
    <description> 
    MyApp 
    </description> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity 
     type="win32" 
     name="Microsoft.Windows.Common-Controls" 
     version="6.0.0.0" 
     publicKeyToken="*deleted*" 
     language="*" 
     processorArchitecture="x86"/> 
    </dependentAssembly> 
    </dependency> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel 
      level="requireAdministrator" 
      uiAccess="false"/> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</assembly> 

Wenn ich löschen {$ R MyApp.res} von der Quelle manifestieren Arbeit. Also ich verstehe, dass MyApp.res (automatisch von Delphi generiert) Beat Manifest.res. Aber in Delphi 2010 funktioniert diese Konfiguration perfekt, funktioniert aber in XE3 nicht. Warum? Wie kann ich es reparieren?

Antwort

9

Wenn Sie eine benutzerdefinierte RES-Datei für Ihr Manifest verwenden möchten, müssen Sie Delphis Standardmanifest deaktivieren, da ein Prozess nur 1 Manifest haben kann. Gehen Sie im Abschnitt "Anwendung" in die Projektoptionen und legen Sie die Option "Laufzeitsymbole" auf "keine" fest.

Alternativ können Sie das Manifest in eine Manifestdatei verschieben und dann die Option "Laufzeitsymbole" auf "benutzerdefiniertes Manifest verwenden" setzen. Entfernen Sie dann Ihre benutzerdefinierte RES-Datei aus Ihrem Code.