检测程序是否以完全管理员权限运行 [英] Detect if program is running with full administrator rights

查看:371
本文介绍了检测程序是否以完全管理员权限运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要确定我的程序是否以完全管理员权限运行。这意味着如果uac打开(对于win vista / 7),我需要确定程序是否实际上具有管理员权限(如果用户右键单击并选择作为管理员运行),而不是由uac限制。

I need to determine if my program is running with full administrator rights. By that I mean if uac is turned on (for win vista/7) that I need to determine if the program actually has admin rights (like if the user right clicked and selected "run as administator") and not limited by uac. How do I do this in C++?

推荐答案


  • Win9x:Everyone是admin >
  • NT4: OpenThreadToken / OpenProcessToken + GetTokenInformation(.. 。,TokenGroups,...)on DOMAIN_ALIAS_RID_ADMINS SID in a loop

  • 2000+:OpenThreadToken / OpenProcessToken + CheckTokenMembership (DOMAIN_ALIAS_RID_ADMINS SID)

    • Win9x: Everyone is "admin"
    • NT4: OpenThreadToken/OpenProcessToken + GetTokenInformation(...,TokenGroups,...) on DOMAIN_ALIAS_RID_ADMINS SID in a loop
    • 2000+: OpenThreadToken/OpenProcessToken + CheckTokenMembership on DOMAIN_ALIAS_RID_ADMINS SID
    • 其他选择包括: IsUserAnAdmin AccessCheck

      在测试当前进程时,不需要检查令牌中的TOKEN_ELEVATION *内容,但它是有用的,如果你需要找出是否用户可以提高,因为他们有一个拆分令牌等。

      Checking the TOKEN_ELEVATION* stuff in the token is not required for testing the current process but it is useful if you need to find out if the user could elevate because they have a split token etc.

      这篇关于检测程序是否以完全管理员权限运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆