2013-05-06 16 views
5

我的程序應該以管理員身份運行。兩年前,我創建了一個清單文件,它工作正常。但是現在,我從Delphi 2010轉移到Delphi XE3,它不起作用 - 程序像往常一樣啓動(不是管理員)。此外,我會將我的程序稱爲「MyApp」。不要捕獲清單文件

在源,我宣佈兩個RE-文件:

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

清單是由該代碼創建:

<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> 

當我刪除{$ R MyApp.res}從源代碼清單的工作。所以我明白MyApp.res(由Delphi自動生成)擊敗了Manifest.res。但在德爾福2010年這個配置工作完美,但在XE3無法正常工作。爲什麼?我如何解決它?

回答

9

如果您想要爲清單使用自定義的.res文件,則需要禁用Delphi的默認清單,因爲進程只能有1個清單。進入項目選項,在「應用程序」部分,並將「運行時主題」選項設置爲「無」。

或者,將您的清單移動到.manifest文件中,然後將「運行時主題」選項設置爲「使用自定義清單」。然後從您的代碼中刪除您的自定義.res文件。