在提权方面,“highestAvailable”和“requireAdministrator”在清单中的区别是什么?

21

我在exe的清单中使用了"highestAvailable"。但在标准用户且UAC开启时,它没有提升exe。

这是"highestAvailable"的行为吗?

我参考了MSDN链接,但不清楚"highestavailable"是否会提升exe。我的要求是如果UAC开启则提升exe。

我改为"requireAdministrator",我的exe在标准用户且UAC开启时被提升。

有人能详细解释一下这两个选项"highestAvailabe"和"requireAdministrator"的提升行为吗?


1
highestAvailable 就是最高可用权限;用户是标准用户,所以这就是最高权限。如果您始终需要管理员权限,请使用 requireAdministrator。 - CMircea
1个回答

27

highestAvailable表示如果当前用户是管理员,则会提升权限。这与您所观察到的一致。当标准用户运行该进程时,不会显示UAC对话框,并且该进程将使用标准令牌运行。当管理员用户执行时,将显示UAC同意对话框,然后进程将以提升的权限运行。

如果您的程序需要管理员权限才能运行,则需要使用requireAdministrator。当标准用户启动此类进程时,将显示过肩摄入的UAC对话框。这让用户有机会要求管理员提供其凭据。

只有当您的程序能够在用户无法提升权限的情况下以有限功能运行时,才应该使用highestAvailable。这就是MSDN主题中所说的混合模式


1
“highestAvailable”的一个例子是注册表编辑器,它可以作为所有用户运行,但对于管理员用户,它需要完全访问该用户。” - Deanna
这意味着当您是管理员时,不能将此程序作为受限制的程序运行,对吗? - Medinoc
@Medinoc 没错。一个配置成这种方式的程序的例子是 regedit。 - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接