5

我的程序应该以管理员身份运行。两年前,我创建了一个清单文件,它工作正常。但是现在,我从 Delphi 2010 转移到 Delphi XE3 并且它不起作用 - 程序像往常一样启动(而不是作为管理员)。此外,我将我的程序称为“MyApp”。

在源代码中,我声明了两个 res 文件:

{$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 中不起作用。为什么?我该如何解决?

4

1 回答 1

9

如果你想为你的清单使用自定义的 .res 文件,你需要禁用 Delphi 的默认清单,因为一个进程只能有 1 个清单。进入项目选项,在“应用程序”部分,将“运行时主题”选项设置为“无”。

或者,将清单移动到 .manifest 文件中,然后将“运行时主题”选项设置为“使用自定义清单”。然后从您的代码中删除您的自定义 .res 文件。

于 2013-05-06T03:54:25.020 回答