2013-05-06 9 views
5

私のプログラムは管理者として実行する必要があります。 2年前、私はマニフェストファイルを作成し、それは正常に動作します。しかし今、私はDelphi 2010からDelphi XE3に移行し、動作しません - いつものように(管理者ではなく)プログラムを開始します。さらに私のプログラムを「MyApp」と呼びます。ソースにおいてマニフェストファイルをキャッチしない

は、私は2つの解像度、ファイルを宣言:

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

I削除

ソースマニフェスト作業から{$ R MyApp.res}。ですから、私はMyApp.res(Delphiによって自動的に生成されます)がManifest.resを打ち負かすことを理解しています。しかし、Delphi 2010では、この設定は完全に機能しますが、XE3では機能しません。どうして?どのように私はそれを修正することができます?

答えて

9

マニフェストにカスタム.resファイルを使用する場合は、プロセスが1つのマニフェストしか持たないため、Delphiのデフォルトマニフェストを無効にする必要があります。 「アプリケーション」セクションの「プロジェクトオプション」に移動し、「ランタイムテーマ」オプションを「なし」に設定します。

また、マニフェストを.manifestファイルに移動し、「ランタイムテーマ」オプションを「カスタムマニフェストを使用する」に設定します。次に、コードからカスタム.resファイルを削除します。

関連する問題