2013-05-06 4 views
5

내 프로그램은 관리자 권한으로 실행해야합니다. 2 년 전 매니페스트 파일을 만들었고 제대로 작동합니다. 하지만 이제는 Delphi 2010에서 Delphi XE3로 이전하고 작동하지 않습니다. 관리자가 아닌 프로그램 시작. 또한 내 프로그램을 "MyApp"라고 부릅니다. 소스에서매니페스트 파일을 캐시하지 마십시오.

, 나는 두 입술 - 파일을 선언

{$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를 이겼음을 이해합니다. 그러나 Delphi 2010에서는이 설정이 완벽하게 작동하지만 XE3에서는 작동하지 않습니다. 왜? 어떻게 해결할 수 있습니까?

답변

9

매니페스트 용 .res 파일을 사용하려면 프로세스에 1 개의 매니페스트 만 가질 수 있으므로 델파이의 기본 매니페스트를 비활성화해야합니다. "응용 프로그램"섹션의 프로젝트 옵션으로 이동하여 "런타임 테마"옵션을 "없음"으로 설정합니다.

또는 매니페스트를 .manifest 파일로 이동 한 다음 "런타임 테마"옵션을 "사용자 지정 매니페스트 사용"으로 설정하십시오. 그런 다음 코드에서 사용자 지정 .res 파일을 제거하십시오.