windows - UAC 和提升提示模式

标签 windows uac design-patterns privilege-elevation

我已经阅读了几个关于 UAC 和特权提升的问题,但没有找到令人满意/全面的答案。

我有这种情况:在 Windows 6 或更高版本上,当用户打开配置窗口时,我必须在确定按钮上显示盾牌(BCM_SETSHIELD)如果完成任务需要权限提升。 -- 我确实知道在 Windows UI 中,屏蔽始终可视化用于“管理任务”,即使禁用了 UAC,但客户有此特定要求。

为了显示图标,我起草了这个条件:

  1. 用户没有管理权限
  2. 当前进程有TOKEN_ELEVATION_TYPE == TokenElevationTypeLimited

条件 #1 很简单:如果用户没有管理权限,则无论 UAC 是什么,都始终需要提升权限。 #2 表示用户具有管理权限,TOKEN_ELEVATION_TYPE 的任何其他值表示不需要提升。

真的那么简单吗?我错过了什么?并且 - 是否有关于此主题的记录或众所周知的模式?

最佳答案

你是对的。如果按钮会升高,大多数人只是打开防护罩,但正确的做法是,如果按钮会导致升高,则打开防护罩(即,如果你已经升高,则抑制它,因为你启动的所有东西都会保持升高除非你遇到一些麻烦来启动一个非提升的进程,并在 UAC 关闭时抑制它。)

好消息是,如果管理员组中的某个人(在 UAC 下)运行非提升的应用程序,当您询问他们是否是管理员时,您将返回 false。所以我认为您可能只接受一项测试就可以了。

关于windows - UAC 和提升提示模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3124541/

相关文章:

c# - 无法写入 HKEY_LOCAL_MACHINE\Software 下的注册表

java - 如何在运行时管理策略模式行为?

windows - 批处理脚本 : local variable from function1 to function2

c - Windows 7 : Launching an application silently with admin privileges under default user account?

java - POI - 在 Excel 中打开时无法写入文件?

c# - 允许本地管理员运行应用程序而无需 "Run as Administrator"

scala - 在 Scala 中动态选择记录器的实现

ios - 为 UIToolBar 设置背景图片

java - 我们是否需要再为 Java 更新设置 Windows 环境变量?

windows - 如何使用 ssh 将 git push 到远程 Windows 机器