【发布时间】:2011-12-24 04:05:03
【问题描述】:
如何正确检查进程是否以管理权限运行?
我检查了IsUserAnAdim function in MSDN,但不建议这样做,因为它可能会在后续版本的 Windows 中被更改或不可用。相反,建议使用CheckTokenMembership 函数。
然后我从CheckTokenMembership 函数的描述中查看了 MSDN 中的替代示例。但是,MSDN 中有 Stefan Ozminski 的评论,其中提到如果禁用UAC,此示例在 Windows Vista 中无法正常工作。
最后我尝试使用来自 MSDN 的 Stefan Ozminski 的代码,但它确定该进程具有管理权限,即使我在没有 Windows 7 中管理权限的普通用户下启动它。
【问题讨论】:
-
如果这里不能显示任何代码,至少你可以给我们提供参考文章/cmets/code的链接?
-
它将帮助很多人准确定义“管理权限”的含义。您的意思是它是否以管理员组中的用户身份运行?你的意思是它是否拥有完整的 UAC 权利?
-
您尝试过 PrivilegeCheck API 吗?
-
你为什么还要检查它?通常最好的策略是尝试。如果有效,则您有足够的权限(可能是管理员权限的子集),否则您没有(即使管理员也可能是这种情况 - 管理员权限不会覆盖 ACL)。