Delphi专题 ·

Delphi定制Windows应用程序清单文件Application Manifest

默认应用程序清单文件

当在Windows目标平台构建项目时,RAD Studio会自动包含应用程序清单文件。您可以用默认的应用程序清单文件为基础,用作自定义应用程序清单文件。应用程序清单文件包含XML应用程序的依赖项列表。例如,这是默认RAD Studio提供的清单文件:

应用程序清单文件提供信息,例如:

  • Windows公共控件支持:需要使用最新版本的视觉控件(也称为“XP主题”)。
  • 需要的应用程序提升级别:指定应用程序是否需要以管理员权限运行。
  • DPI感知:指定应用程序是否被设计成基于不同的DPI值来处理缩放。

创建自定义应用程序清单文件

  • 1、创建一个空白文本文件。
  • 2、将默认的应用程序清单复制到其中。
  • 3、添加或修改依赖项(如所需的提升级别或DPI支持)。
  • 4、以.manifest扩展名保存文本。

声明所需的提高级别

默认的应用程序清单声明的级别为asInvoker。这意味着应用程序将具有与父进程相同的提升级别。如果您希望将应用程序提升到Windows管理员权限级别,只需改变requestedExecutionLevel标签中的值,把asInvoker改为requireAdministrator。

注意:用户仍然需要管理员权限才能运行具有管理员特权级别的应用程序。

声明DPI感知

为了创建一个DPI感知的应用程序,您需要在应用程序清单中声明DPI感知。例如,为了声明您的应用程序是每个监视器DPI感知的,在之前添加以下内容:

将自定义清单文件添加到应用程序中

  • 1、转到Project > Options > Application 打开Application Options页面;
  • 2、从Target选择目标平台;
  • 3、在Manifest File区域,从下拉菜单将Auto Generate选为Custom
  • 4、在Custom manifest区域,点击省略号按钮[...],选择自定义清单文件.manifest。

注意:应用程序选项对于每个平台配置是特定的。您需要为每个平台配置对显式设置自定义清单(它可能是相同的.manifest文件)。

故障排除

测试管理员权限

下面的代码片段可以作为应用程序是否需要(并且适当地授予)管理员权限的快速测试。申报你的申请所需的提升级别,并执行以下程序:
管理员级别(标准用户下):

  • 1、asInvoker:应用程序作为标准用户启动
  • 2、highestAvailable:应用程序作为标准用户启动
  • 3、requireAdministrator:在运行应用程序之前提示管理员权限

此测试之所以有效,是因为您需要管理员级权限才能写入注册表的HKEY_LOCAL_MACHINE\Software部分。代码段实际上不向注册表写入任何东西,它只请求写入权限。
确保您构建应用程序后,在IDE之外执行它,因为IDE默认情况下会用管理员级别的权限调试应用程序(不尊重应用程序清单)。

参与评论