检测程序是否以完全管理员权限运行 [英] Detect if program is running with full administrator rights
问题描述
我需要确定我的程序是否以完全管理员权限运行。这意味着如果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屋!