我正在Delphi 10上开发用于Windows 10的软件,我必须在10上运行我的软件并具有管理员权限。如果我右键单击exe文件并以管理员身份运行它,它不会引发任何错误,但如果我运行它以任何其他方式程序引发错误消息Access Denied
。所以,它需要具有管理员身份。最初我以为你可以使用任务调度程序来完成这个任务,但它也有问题。现在,我正在学习我需要在Windows 10上进行自定义清单。因此,在通过一些stackoveflow问题,博客和网站在线之后,我为我的程序创建了一个清单,如下所示,但是,当我运行我的程序时,它会引发Access Denied
错误消息。如何使用Windows 10的清单设置管理员权限?
这是我做过什么:
创建的清单文件(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>
创建RC文件GeoMonitor.rc使用记事本
1 24 GeoMonitor.manifest
在取消选中选项0后,将这两个文件链接到我的项目文件项目选项中的。
最后,我遵守我的项目文件没有问题,然后测试编译过的EXE文件在Windows 10,它仍在运行作为用户不是管理员。我究竟做错了什么?
更新: 有什么我必须在我的项目选项 - 资源编译器部分设置?
你是如何“链接这两个文件”?你看过[这个问题的第二个答案](http://stackoverflow.com/a/6227554/62576),包括评论? –
@KenWhite我实际上是通过右键单击项目名称并在弹出菜单中单击添加选项将这些文件添加到我的程序项目文件中。另外,我注意到RC文件被链接到我的DPR文件,就像'{。$ R'GeoMonitor.res''GeoMonitor.rc'}''我在网上阅读,你不需要分别编译RC文件,Delphi编译器会为你做到这一点。 – ThN
随着那里的点('{。$ R}'),这是一个无所事事的声明(实际上是一个评论)。为了使它实际上成为编译器指令,您需要移除'.'以离开'{$ R'GeoMonitor.res''GeoMonitor.rc'}'。这将解释为什么它不起作用 - 清单从未包含在内。 –