如何确定程序是否需要提升权限?

时间:2017-04-07 07:06:37

标签: delphi winapi elevation

想象一下以下场景:

我在某处有一个exe文件“DoINeedAdmin.exe”,想要检查这个程序是否需要admin-rights来启动它。

尝试启动它并通过一些失败返回值来确定它是可以的。

由于Windows显然可以通过向exe添加admin-icon来实现这一点,如果它需要提升权限,我希望它也可以通过编程方式实现。

3 个答案:

答案 0 :(得分:3)

总之,没有确定的方法。

如果在其清单中指定了Windows,则Windows将启动升级程序。如果程序名称包含Setup, Install, Update, Patch(可能更多),它们也将启动它(除非这是disabled by a local policy or a manifest file)。

除此之外,应用程序还可以从代码中请求提升。你无法在外部程序中检测到它。

答案 1 :(得分:3)

shell32(序号865)中有一个未记录的函数,它接受LPCWSTR路径并在路径需要提升时返回非零BOOL。我不知道这个功能是否会检查外部清单。

答案 2 :(得分:2)

简而言之:Application Manifest。这是嵌入到可执行文件中的XML文件,特别感兴趣的是<requestedExecutionLevel level="requireAdministrator" /> tag

相关问题