如何使用本机C+;检查进程在windows 7中是否具有提升的权限+;? 如何检查进程在Windows 7中是否有特权(使用本机C++,而不是C/C++/net)?< /P>

如何使用本机C+;检查进程在windows 7中是否具有提升的权限+;? 如何检查进程在Windows 7中是否有特权(使用本机C++,而不是C/C++/net)?< /P>,c++,winapi,windows-7,uac,C++,Winapi,Windows 7,Uac,有时我一直在寻找答案,但我能找到的都是使用.NET framework的答案。最简单的方法是调用IsUserAnAdmin函数。如果您需要更高的精度,您也可以使用GetTokenInformation,但在大多数情况下,这是过分的。定义“提升”。特权优先?史蒂夫:从另一个回答来看,这是一个很好的问题。我只是认为OP的意思是“提升的优先级”,这可能是完全错误的。也不清楚:您的流程还是其他流程?通过编写“提升的权限”,我的意思是流程具有“管理权限”(指用户访问控制-UAC)。Kenny的可能副本是正

有时我一直在寻找答案,但我能找到的都是使用.NET framework的答案。

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

定义“提升”。特权优先?史蒂夫:从另一个回答来看,这是一个很好的问题。我只是认为OP的意思是“提升的优先级”,这可能是完全错误的。也不清楚:您的流程还是其他流程?通过编写“提升的权限”,我的意思是流程具有“管理权限”(指用户访问控制-UAC)。Kenny的可能副本是正确的,这很容易测试。编写一个应用程序,打印出您是否是管理员,并以管理员和普通用户(需要OTS来提升)的身份登录,运行提升版和非提升版。您将在四次快速运行中看到,如果应用被提升,您将被报告为管理员,无论是谁首先登录到机器。FWIW,MSDN文章的最新建议是使用CheckTokenMembership。此函数是CheckTokenMembership的包装器。建议直接调用该函数来确定管理员组状态,而不是调用IsUserAnAdmin。@Kategory感谢您如此简单地解释这一点;MSDN文档意味着它检查所有者用户的权限(是否为所有者管理员),但正如您所解释的,这是不正确的。