【发布时间】:2015-09-08 10:22:17
【问题描述】:
我在 Delphi XE for Windows 10 上开发软件,我必须在 10 上以管理员权限运行我的软件。如果我右键单击 exe 文件并以管理员身份运行它,它不会引发任何错误,但如果我以任何其他方式运行它,程序会引发错误消息Access Denied。因此,它需要具有管理员身份。最初我认为您可以使用任务调度程序来完成此任务,但它也存在问题。现在,我正在学习我需要有自定义清单才能在 Windows 10 上执行此操作。因此,在在线浏览了一些 stackoveflow 问题、博客和网站之后,我为我的程序创建了一个清单,如下所示,但是当我运行我的程序时它仍然会引发Access Denied 错误信息。
这就是我所做的:
使用 NOTEPAD 创建了清单文件 (GeoMonitor.manifest):
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestversion="1.0">
<assemblyIdentity version="1.1.1.1">
processorArchitecture="*"
name="GeoMonitor"
type="win32" />
<description>elevate execution level</description>
<dependency>
<dependentAssembly>
<assemblyIdentity>
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustinfo xmlns="urn:schemas-microsoft-com:asm.v2"><security>
<requestedPrivileges>
<requestedExecutionlevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustinfo>
</assembly>
使用 NOTEPAD 创建 RC 文件 GeoMonitor.rc
1 24 GeoMonitor.manifest
在我取消选中项目选项中的选项Enable Run Time Theme 后,将这两个文件链接到我的项目文件。
最后我编译我的项目文件没有问题,然后在 Windows 10 上测试编译的 exe 文件。它仍然以用户而不是管理员身份运行。我做错了什么?
更新: 我需要在我的项目选项 - 资源编译器部分中设置什么吗?
【问题讨论】:
-
你是如何“链接这两个文件”的?你看过second answer to this question,包括cmets吗?
-
@KenWhite 我实际上是通过右键单击项目名称并单击弹出菜单中的添加选项将这些文件添加到我的程序项目文件中。另外,我注意到 RC 文件已链接到我的 DPR 文件,就像
{.$R 'GeoMonitor.res' 'GeoMonitor.rc'}'我在网上某处读到的那样,您不需要单独编译 RC 文件,Delphi 编译器会为您完成。 -
带有点 (
{.$R}),它是一个无所事事的声明(实际上是一个评论)。为了使其真正成为编译器指令,您需要删除.以保留{$R 'GeoMonitor.res' 'GeoMonitor.rc'}。这可以解释为什么它不起作用 - 清单从未包含在内。
标签: windows delphi manifest access-denied administrator