【问题标题】:How to check if a process has elevated privileges in windows 7 using native C++?如何使用本机 C++ 检查进程是否在 Windows 7 中具有提升的权限?
【发布时间】:2023-03-04 17:36:01
【问题描述】:

如何检查进程在 Windows 7 中是否具有提升的权限(使用原生 C++,而不是 C#/C++.net)?

我一直在寻找答案,但我只能找到使用 .NET 框架的答案。

【问题讨论】:

  • 定义“提升”。特权?优先?还有什么?
  • @Steve:根据其他回复,这是一个很好的问题。我只是认为 OP 的意思是“提升优先级”,这可能是完全错误的
  • 还不清楚:您的流程还是其他流程?
  • 写“提升权限”是指该进程具有“管理权限”(指用户访问控制 - UAC)。

标签: c++ winapi windows-7 uac


【解决方案1】:

最简单的方法是调用 IsUserAnAdmin 函数。如果您需要更高的精度,您也可以使用 GetTokenInformation,但在大多数情况下,这太过分了。

【讨论】:

  • 肯尼是对的,这很容易测试。编写一个应用程序,打印出您是否是管理员,然后以管理员身份和普通用户(需要 OTS 来提升权限)登录并以管理员身份运行它。您将在四次快速运行中看到,如果应用程序被提升,您将被报告为管理员,无论谁首先登录机器。
  • FWIW,MSDN文章最新推荐是使用CheckTokenMembership。 此函数是 CheckTokenMembership 的包装器。建议直接调用该函数来确定管理员组状态,而不是调用 IsUserAnAdmin。
  • @KateGregory 谢谢你这么简单的解释; MSDN 文档暗示它检查所有者用户的权限(是否为所有者管理员),但正如您所解释的那样,这是不正确的。
猜你喜欢
  • 2010-12-08
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 2022-09-28
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多