如何在windows操作系统中检测我的进程是否具有超级用户权限
如何在windows操作系统中检测我的进程是否具有超级用户权限。 例如,我想检测我的ie explore是否使用超级用户权限我的帐户是管理员组还是普通用户组使用该功能如何在windows操作系统中检测我的进程是否具有超级用户权限,windows,winapi,visual-c++,Windows,Winapi,Visual C++,如何在windows操作系统中检测我的进程是否具有超级用户权限。 例如,我想检测我的ie explore是否使用超级用户权限我的帐户是管理员组还是普通用户组使用该功能 编辑:或者,根据对该API的阅读,直接使用可能更好,因为iUserAnAdmin的未来可用性似乎存在疑问;该页面上有一个示例。要获取组信息,您可以使用GetUserName然后使用函数,但根据您的问题,不清楚您是否在寻找这样的东西。这里有一个VB6解决方案来检查当前进程是否提升;应该很容易翻译成C++。 Public Functi
编辑:或者,根据对该API的阅读,直接使用可能更好,因为iUserAnAdmin的未来可用性似乎存在疑问;该页面上有一个示例。要获取组信息,您可以使用
GetUserName
然后使用函数,但根据您的问题,不清楚您是否在寻找这样的东西。这里有一个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
公共函数iscurrentProcessHighted()为布尔值
变暗lRet为长,PAD管理器组为长
Dim udtSidIdentifierAuthority作为SID_标识符_权限
udtSidIdentifierAuthority.Value(5)=5'安全性\u NT\u权限
lRet=AllocateAndInitializeSid(udtSidIdentifierAuthority,2,安全性\内置\域\ RID,域\别名\域\管理员,0,0,0,0,0,0,PadAdministratorsGroup)
如果lRet为0,则
如果CheckTokenMembership(0,PadAdministratorGroup,lRet)0,则“使用0检查调用线程”
IsCurrentProcessHighted=(lRet 0)
如果结束
注意:这一行在Windows7中经常崩溃,修复方法是更改API声明以接收参数ByVal
' http://stackoverflow.com/questions/1913087/checktokenmembership-in-vb6-crashing-on-freesid-on-windows-7-and-windows-2008
呼叫自由ID(pAdministratorsGroup)
如果结束
端函数
问题是什么?您想知道您的进程是否有提升的令牌吗?或者您想知道该用户是否在管理组中?你为什么想知道?你说“我的过程”,然后你谈论IE。你是在编码BHO吗?