如何检测我的进程在windows os中具有超级用户权限。 例如,我想检测我的ie探索是否使用超级用户权限我的帐户是管理员组或普通用户组
答案 0 :(得分:0)
使用IsUserAnAdmin功能。
编辑或者,根据对该API的阅读,最好直接使用CheckTokenMembership,因为IsUserAnAdmin的未来可用性似乎存在疑问;该页面上有一个例子。
答案 1 :(得分:0)
要获取群组信息,您可以使用GetUserName
然后使用NetUserGetInfo功能,但根据您的问题,您是否正在寻找此类内容并不明显。
答案 2 :(得分:0)
这是一个VB6解决方案,用于检查当前进程是否提升;应该很容易转换为C ++。
Public Function IsCurrentProcessElevated() As Boolean
Dim lRet As Long, pAdministratorsGroup As Long
Dim udtSidIdentifierAuthority As SID_IDENTIFIER_AUTHORITY
udtSidIdentifierAuthority.Value(5) = 5 ' SECURITY_NT_AUTHORITY
lRet = AllocateAndInitializeSid(udtSidIdentifierAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, pAdministratorsGroup)
If lRet <> 0 Then
If CheckTokenMembership(0, pAdministratorsGroup, lRet) <> 0 Then ' Use 0 to check the calling thread
IsCurrentProcessElevated = (lRet <> 0)
End If
' Note: This line was often crashing in Windows 7, fix was to change the API declare to recieve argument ByVal
' http://stackoverflow.com/questions/1913087/checktokenmembership-in-vb6-crashing-on-freesid-on-windows-7-and-windows-2008
Call FreeSid(pAdministratorsGroup)
End If
End Function