我有一个应用程序,将程序设置写入Windows注册表,这是绝对必要的。存储到文件不是一个选项。
为了简化这一点,我想给予一个“管理员权限”唠叨屏幕,而不是试图解释如何右键单击程序文件/捷径。
我找到了一篇相当不错的文章,但在为清单添加自己的资源文件后,我收到了重复的资源错误。
这可能是由于与内部清单的冲突,为了解决这个问题,我看到很多评论建议在项目选项中禁用“启用运行时主题”。我已经通过了每一个菜单,但找不到它,我现在被告知,它可能不会在 Delphi 7,并在以后的版本中引入。
如何添加我自己的清单?
3条答案
按热度按时间eeq64g8w1#
我已经评论过“将程序设置写入注册表不是给予应用程序管理员权限的适当理由”。但是,在任何情况下,包括UAC清单都是一个好主意。公共
requestedExecutionLevel
应该是level="asInvoker"
。see the docs创建以下4个文件(2组):
(UAC仅)
uac.清单
uac.rc
(UAC+ XP主题)
uac_xp.manifest
uac_xp.rc
通过“项目>添加到项目”菜单项将所需的
rc
文件(uac.rc
或uac_xp.rc
)添加到项目中。这将在项目文件中创建{$R}
指令:注意
{$R 'uac_xp.res' 'uac_xp.rc'}
。 Delphi 将自动编译rc
到res
文件。或者,您可以在 Delphi IDE外部通过
brcc32 uac.rc
编译rc
文件。然后手动将{$R 'uac_xp.res'}
添加到项目中。请确保您没有使用任何其他XP清单。
kd3sttzy2#
如何从 Delphi 7项目中删除“内部”清单?
这个 * 内部清单 * 在 Delphi 中被
TXPManifest
组件表示了7次,其唯一目的是将XPMan.pas
单元添加到表单单元的uses子句中。然后,这个XPMan.pas
单元将资源文件和清单本身包含到项目输出中。因此,要删除这个 * 内部清单 *,您需要从项目的所有表单中删除所有
TXPManifest
组件(如果您使用了它们),以及从项目的所有单元中删除所有XPMan
uses子句引用。简而言之,对项目的所有单元执行以下两个步骤(如果没有使用
TXPManifest
组件,第一步是可选的,但第二步是可选的):z31licg03#
在较新版本的 Delphi 中,这不再是必需的。
在 * 项目选项 * 下,然后是 * 应用程序 *,有一个用于清单的部分:
截图来自版本10.2.1东京
屏幕截图自版本11.1.3 Alexandria
这会自动处理Kobik's answer底部作为警告提到的XP清单。
我不知道这是哪个 Delphi 版本的。
(Free自由编辑这个答案,如果你知道)。(编辑Ian Murphy 2019年2月:在XE2中不可用)